Angular 使用服务结果配置模块
我有一个(可注入的单例)服务,可以从服务器加载配置Angular 使用服务结果配置模块,angular,Angular,我有一个(可注入的单例)服务,可以从服务器加载配置 export class ConfigService { //.. some properties private static instance: ConfigService; constructor( //.. some dependecies, including Http) { if (ConfigService.instance) { return ConfigService.instance;
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
配置的库,其中包含一些仅在运行时可用的数据,并且需要从服务器加载。这是一个糟糕的做法。试着用另一种方法解决它,我知道。另一个问题是:)