Angular 角度库-使用APP_初始值设定项将参数传递给服务
我目前正在创建一个角度库(angular 7)。我需要向模块传递一些配置,还需要调用函数“loadConfig”。问题是我无法在loadConfig函数中注入配置值 如果我尝试将它添加到deps数组并向函数添加一个参数,我将得到一个nullinjector错误 我尝试添加一些控制台日志,在forRoot方法中,我获得了配置的值,在SomeService中,我还获得了正确的配置值。在loadConfig中,我总是将配置设置为未定义。使用控制台日志,我发现forRoot方法是在loadConfig之前执行的,所以我不明白为什么它不工作 你能帮帮我吗Angular 角度库-使用APP_初始值设定项将参数传递给服务,angular,angular-http-interceptors,angular-library,Angular,Angular Http Interceptors,Angular Library,我目前正在创建一个角度库(angular 7)。我需要向模块传递一些配置,还需要调用函数“loadConfig”。问题是我无法在loadConfig函数中注入配置值 如果我尝试将它添加到deps数组并向函数添加一个参数,我将得到一个nullinjector错误 我尝试添加一些控制台日志,在forRoot方法中,我获得了配置的值,在SomeService中,我还获得了正确的配置值。在loadConfig中,我总是将配置设置为未定义。使用控制台日志,我发现forRoot方法是在loadConfig之
export function loadConfig() {
//some code
//if I add config as a parameter, the config here is undefined
}
export class SomeModule {
public static forRoot(config: any): ModuleWithProviders {
//if I console log here config is populated
return {
ngModule: SomeModule,
providers: [
SomeService,
{
provide: "config",
useValue: config,
},
{
provide: APP_INITIALIZER,
useFactory: loadConfig,
deps: [], //tried adding config here but get nullinjector error
multi: true,
}
],
};
}
}
export class SomeService {
constructor(@Inject("config") private config: any) {
//the config here is populated
}
}
我看不出你的代码中有任何主要的问题 我建议您使用存储在全局变量中的
InjectionToken
这段代码对我来说就像一个符咒:
export const CONFIG_TOKEN=new InjectionToken('APP_CONFIG');
导出函数initConfig(配置:any){
return()=>{…}
}
导出类模块{
publicstaticforroot(配置:any):ModuleWithProviders{
返回{
ngModule:SomeModule,
供应商:[
{
提供:CONFIG_令牌,
useValue:config,
},
{
提供:应用程序初始化器,
useFactory:initConfig,
deps:[配置令牌],
多:是的,
}
]
};
}
}
您的代码看起来不错,请参阅我的答案。但是在deps
中,您是否将令牌“config”作为字符串或配置值传递。这可能是个问题。为了避免任何混淆,请创建一个全局注入令牌。