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

use*_*980 7 angular

我有一个模块负责通过服务查询我的 API,我计划在许多应用程序中使用该模块。反过来,应用程序负责在方法中将配置(例如 API URL)传递给此模块forRoot

export class APIModule {
  static forRoot(appConfig: AppConfig): ModuleWithProviders {
    return {
      ngModule: APIModule,
      providers: [
        services.ProductService,
        services.UserService,
        { provide: AppConfigToken, useValue: appConfig}
      ]
    };
  }
}
Run Code Online (Sandbox Code Playgroud)

我面临一个挑战,因为应用程序(即客户端模块)通过利用 .json 文件从 JSON 文件中获取配置APP_INITIALIZER。这是简化的定义:

@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 { }
Run Code Online (Sandbox Code Playgroud)

我的问题是:我怎么能调用APIModule.forRootuseFactory?或者换句话说,我怎么能初始化APIModuleuseFactory?我正在使用Angular7.