使用APP_INITIALIZER时如何使用forRoot导入模块?

时间:2019-03-01 14:55:25

标签: angular

我有一个模块,负责通过服务查询我的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

0 个答案:

没有答案