配置带有服务结果的模块

时间:2017-09-05 09:54:59

标签: angular

我有一个(可注入的,单一的)服务,可以从服务器加载配置

export class ConfigService {
  //.. some properties
  private static instance: ConfigService;

  constructor( //.. some dependecies, including Http) {
    if (ConfigService.instance) {
        return ConfigService.instance;
    }

    ConfigService.instance = this;
  }

  init(){
    //..  load config file from server
  }
}

我在app init上运行

@NgModule({
  imports: [InnerModule],
  providers: [ //...
    { 
       provide: APP_INITIALIZER, 
       useFactory: (config: ConfigService) => () => config.init(), 
       deps: [ConfigService], 
       multi: true 
    }
 ]
)
export class AppModule {}

现在,内部模块需要加载一个库模块,可以配置一个带有配置对象的.forRoot调用

@NgModule({
    imports: [
        LibraryModule.forRoot({
            colors: //.. colors provided by configuration service
        })
    ],
})
export class InnerModule { }

问题是模块加载是在运行初始化程序之前完成的,所以我不能在那里使用配置。

有没有办法推迟模块加载,直到我可以保证配置已加载?

我基本上需要的是能够配置一个只能通过.forRoot配置的库,其中一些数据仅在运行时可用,并且需要从服务器加载。

0 个答案:

没有答案