我有一个模块,负责通过服务查询我的API,并且我计划在许多应用程序中使用该模块。反过来,这些应用负责通过forRoot
方法将配置(例如API URL)传递到此模块:
export class APIModule {
static forRoot(appConfig: AppConfig): ModuleWithProviders {
return {
ngModule: APIModule,
providers: [
services.ProductService,
services.UserService,
{ provide: AppConfigToken, useValue: appConfig}
]
};
}
}
我面临挑战,因为应用程序(即客户端模块)通过利用APP_INITIALIZER
从JSON文件获取配置。这是简化的定义:
@NgModule({
imports: [
APIModule.forRoot({ apiUrl: '' }) // ISSUE HERE
],
providers: [{
provide: APP_INITIALIZER,
multi: true,
deps: [AppConfigService],
useFactory: (appConfigService: AppConfigService) => {
return () => {
return appConfigService.getAppConfig();
}
}
}],
})
export class AppModule { }
我的问题是:如何从APIModule.forRoot
呼叫useFactory
?换句话说,如何从APIModule
初始化useFactory
?我正在使用Angular7
。