使用forRoot(),APP_INITIALIZER或其他方法/解决方法通过服务器配置初始化Angular 6库模块

时间:2018-08-10 00:30:29

标签: angular

方案是,我们在主应用程序中将Angular 6库(我们构建)作为NPM软件包包括在内。主应用程序使用Angular CLI环境,每个环境具有特定的配置(照常)。当前,该库的配置类似于app.module.ts中的MyModule.forRoot( environment.whateverConfig )

问题是environment.whateverConfig中的某些设置需要通过调用我们正在使用APP_INITIALIZER的服务器来提供。但是问题是forRoot()APP_INITIALIZER提供者中的诺言完成之前就执行了,因此该库无法获得正确的配置。

似乎APP_INITIALIZER非常适合在应用程序引导之前执行操作,而不是在加载库/模块之前执行操作。

为此寻找解决方案或解决方法。

谢谢。

1 个答案:

答案 0 :(得分:1)

我的previous answer to a similar question应该可以为您提供帮助。 看看那里的异步初始化方法。

要点是,除了获取配置之外,您还可以获取配置的Observable,然后在要使用该配置的任何地方,对可观察的配置进行flatMap(又称mergeMap)。从本质上讲,这使配置的使用者可以等待其加载。