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 :(
我想在我的项目中导入一个模块,其中包含从文件加载的特定配置,该配置文件可以在运行时修改,并且应用程序应该在浏览器刷新时加载新的更改。
我现在做的是将配置文件路径发送到"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 :(