首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >APP_INITIALIZER不阻止导入的模块

APP_INITIALIZER不阻止导入的模块
EN

Stack Overflow用户
提问于 2018-09-28 03:40:00
回答 1查看 1.5K关注 0票数 6

我有一个Angular (v6.0.0)应用程序,我正在尝试设置它,并在APP_INITIALIZER期间拉入运行时配置。我已经阅读了几篇文章(比如thisthisthis),所以像this这样的问题基本上解决了所有的问题。

我让应用程序调用配置服务函数来在应用程序引导时加载配置(在APP_INITIALIZER期间)。这一切都工作得很完美。问题是,应用程序的其他部分正在加载/初始化/它们的构造函数在配置加载之前被调用,因此无法使用文件中的配置。以下是app.module文件的摘录:

代码语言:javascript
代码运行次数:0
运行
复制
function initConfig(configService: AppConfigService) {
    return () => configService.loadConfig();
}

...

@NgModule({
    imports: [AuthModule, SharedModule]
    providers: [
        {
            provide: APP_INITIALIZER,
            useFactory: initConfig,
            deps: [AppConfigService],
            multi: true
        },
        ...
    ]
})

和AppConfigService文件:

代码语言:javascript
代码运行次数:0
运行
复制
public loadConfig() {
    return this._http.get('./assets/app-config/config.json')
        .toPromise()
        .then((config: any) => {
            this.config = config;
        })
}

如您所见,loadConfig函数返回一个promise,并且加载了配置(我已经确认了这一点)。

但是,我尝试访问AuthModule构造函数中的配置(这样我就可以获取向服务器进行身份验证所需的配置值)和SharedModule中的服务(在本例中是查找Sentry DSN ),它们都是在加载配置之前运行的。我相信还会有其他的例子,但这是我到目前为止所发现的。

我的印象是,在APP_INITIALIZER解决之前,应用程序中的任何内容都不会加载,但显然情况并非如此。我是不是遗漏了什么东西来完成这个?是否有什么我可以做的事情,使所有其他模块在初始化之前等待配置加载?如果不是,它基本上违背了运行时配置的目的。

EN

回答 1

Stack Overflow用户

发布于 2019-08-29 01:59:17

我最近遇到了你所面临的问题。不幸的是,正如可能已经知道的那样,APP_INITIALIZER不会阻止模块的导入。您可以使用全局窗口对象来附加配置数据。这样,数据就可以在整个应用程序中全局访问。

代码语言:javascript
代码运行次数:0
运行
复制
public loadConfig() {
    return this._http.get('./assets/app-config/config.json')
        .toPromise()
        .then((config: any) => {
            window['appConfigData'] = config;
            this.config = config;
        })
}

在属于SharedModule的服务中,您可以简单地从window对象访问配置数据。

代码语言:javascript
代码运行次数:0
运行
复制
constructor() {
  ..
  ..
    const configData = window['appConfigData'];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52544034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档