J'essaie de fournir un moyen de personnaliser un service, en utilisant un static forRoot(), mais ...Angular 4.x - les appels de fonction ne sont pas pris en charge. Envisager de remplacer la fonction ou lambda par une référence à une fonction exportée
Je reçois l'erreur suivante - même si j'ai exporté la fonction menuServiceFactory à utiliser comme usine.
J'ai aussi essayé de l'exporter en tant que valeur const.
ERROR in Error: Error encountered resolving symbol values statically. Calling function 'MenuModule', function calls are not supported. Consider replacing the function or lambda with a reference to an exported function, resolving symbol AppModule in ...
Code pertinent -
import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MenuComponent } from './menu.component';
import { MenuService } from './menu.service';
import { MdMenuModule, MdToolbarModule, MdButtonModule } from '@angular/material';
import { FlexLayoutModule } from '@angular/flex-layout';
import { SecurityModule, SecurityService } from '@savantly/ngx-security';
@NgModule({
imports: [
CommonModule,
MdMenuModule, MdToolbarModule, MdButtonModule, FlexLayoutModule, SecurityModule
],
exports: [
CommonModule,
MdMenuModule, MdToolbarModule, MdButtonModule, FlexLayoutModule,
SecurityModule,
MenuComponent],
declarations: [MenuComponent],
providers: []
})
export class MenuModule {
static forRoot(options?: any): ModuleWithProviders {
if (options && options.securityService) {
return {
ngModule: MenuModule,
providers: [{
provide: MenuService,
useFactory: menuServiceFactory,
deps: [options.securityService]
}]
}
} else {
return {
ngModule: MenuModule,
providers: [MenuService]
};
}
}
constructor (@Optional() @SkipSelf() parentModule: MenuModule) {
if (parentModule) {
throw new Error(
'MenuModule is already loaded. Import it in the AppModule only');
}
}
}
export function menuServiceFactory(_securityService: SecurityService): MenuService {
return new MenuService(_securityService);
}
Essayez de retirer 'si else' déclaration – yurzui
Merci @yurzui - Il ne se débarrasser de l'erreur d'analyse statique. Maintenant, je dois comprendre comment rendre cela conditionnel ... – Jeremy
'{provide: someToken, useValue: options}, {fournir: MenuService, useFactory: menuService, deps: [someToken]}' – yurzui