异步依赖注入

我使用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