异步依赖注入
我使用Angular2 v2.2.3
我已经使用forRoot()函数创建了通用模块,如下所示:
...
public static forRoot(): ModuleWithProviders {
return {
ngModule: CommonsModule,
providers: [
SomeOtherDependency,
{
provide: ConfigService,
useFactory: ConfigFactory,
deps: [Http]
}
]
};
这是我的ConfigFactory:
export function ConfigFactory(http:Http):Promise<ConfigService> {
return http.get('confg/config.json').map(r => {
return new ConfigService(r);
}).toPromise();
}
我试图返回Promise和Observable。
在提供者中定义的SomeOtherDependency需要ConfigService。 问题在于Angular没有注入承诺解决的价值,而是承诺自己。
我如何强制角度等待,直到承诺解决适当的依赖关系,然后注入到其他依赖关系?
我尝试过不同的方法,并始终注入价值是承诺或可观察的。 就像iniector忽略什么类型的工厂返回。 我需要在整个应用程序启动之前加载一些json文件
我发现了一个问题。
当我需要返回功能时,我从工厂返回一个承诺。 另外我错过了来自提供者部分的“多”参数。 这里是更新工厂与APP_INITIALIZER一起工作:
export function ConfigFactory(config:ConfigService, http:Http):Function {
return () => config.load(http);
}
并在模块中:
providers: [
ConfigService,
{
provide: APP_INITIALIZER,
useFactory: ConfigFactory,
deps: [ConfigService, Http],
multi: true
},
]
链接地址: http://www.djcxy.com/p/37217.html
上一篇: asynchronous dependency injection
下一篇: How to use JQuery