加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular2 – 异步依赖注入

发布时间:2020-12-17 07:22:51 所属栏目:安全 来源:网络整理
导读:我使用Angular2 v2.2.3 我用forRoot()函数创建了通用模块,如下所示: ... public static forRoot(): ModuleWithProviders { return { ngModule: CommonsModule,providers: [ SomeOtherDependency,{ provide: ConfigService,useFactory: ConfigFactory,deps:
我使用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没有注入由promise解决的价值,而是承诺自己.

如何强制angular等待promise以适当的依赖关系解决,然后将其注入其他依赖项?

我尝试了不同的方法,总是注入价值是承诺或可观察的.就像iniector忽略了工厂返回的类型.我需要在整个应用程序启动之前加载一些json文件

我发现了一个问题.

当我需要返回功能时,我正从工厂返回一个承诺.我也错过了提供者部分的“多”论证.这是更新的工厂,与APP_INITIALIZER一起使用:

export function ConfigFactory(config:ConfigService,http:Http):Function {
    return () => config.load(http);
}

在模块中:

providers: [
    ConfigService,{
        provide: APP_INITIALIZER,deps: [ConfigService,Http],multi: true
    },]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读