Angular 5 - 动态模块配置

Angular 5 - Dynamic modules configuration

我想在我的项目中导入一个模块,其中包含从文件加载的特定配置,该配置文件可以在运行时修改,并且应用程序应该在浏览器刷新时加载新的更改。

我现在做的是将配置文件路径发送到"forRoot"方法中的模块,并用指向"load"方法的"useFactory"提供配置,此 "load" 方法只是使用 HTTP GET 来检索我的配置文件。在我执行 "ng build --prod --build-optimizer" 之前,"ng build" 似乎一切正常,这导致 "Error encountered resolving symbol values statically".

我想它的原因是因为我在静态 "forRoot" 方法中使用带有 "useFactory" 的提供程序,并且 "useFactory" 指向非静态方法。这怎么可能处理呢?这是一个好方法吗?

这是我的 'forRoot' 方法和 'initConfig' 方法的样子:

export class JwtSecurityModule {
   public static forRoot(configPath:string) {
      return {
         ngModule: JwtSecurityModule,
         providers: [
            AppConfig,
            {
               provide: APP_INITIALIZER,
               useFactory: initConfig,
               deps: [AppConfig, configPath],
               multi: true
            }
         ]
      };
   }
   ...
}
...
export function initConfig(config:AppConfig, configPath: string) {
   return () => config.load(configPath);
}   
export function initConfig(config:AppConfig, configPath: string) {
  return (): Promise<any> => {
    return new Promise((resolve, reject) => {
      config.load(configPath)
      resolve();
    });
  };
}

据我所知,你需要 return 一个 Promise。

也许,Angular 5 不是 运行 我的 APP_INITIALIZER :(