【问题标题】:Angular 5 - Dynamic modules configurationAngular 5 - 动态模块配置
【发布时间】:2017-12-26 17:16:52
【问题描述】:

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

我现在正在做的是在“forRoot”方法中将配置文件路径发送到模块,并为配置提供指向“load”方法的“useFactory”,这个“load”方法只是使用一个 HTTP GET 来检索我的配置文件。在我执行“ng build --prod --build-optimizer”之前,“ng build”似乎一切正常,这导致“遇到静态解析符号值时出错”。

我想它的原因是因为我在静态“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);
}   

【问题讨论】:

    标签: angular angular5 angular-aot


    【解决方案1】:
    export function initConfig(config:AppConfig, configPath: string) {
      return (): Promise<any> => {
        return new Promise((resolve, reject) => {
          config.load(configPath)
          resolve();
        });
      };
    }
    

    据我所知,你需要在那里返回一个 Promise。

    也许,Angular 5 目前没有运行我的 APP_INITIALIZER :(

    【讨论】:

    • 感谢成功,我需要添加配置路径作为提供者并使用“useValue”子句发送值。
    猜你喜欢
    • 1970-01-01
    • 2021-11-12
    • 2017-06-29
    • 2018-10-14
    • 2018-10-13
    • 2020-06-26
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多