我对Angular 11应用程序进行了几次更改,现在有一些问题需要修复。我不明白的是,为什么我定义的应用程序初始值设定项根本没有被调用。我所做的改变不应该影响这一点,所以我很感激你的建议。我完全按照官方文件写的那样做:
function initApp(http: HttpBackend, settings: AppSettings): () => Observable<any> {
console.log("INITIALIZING APP");
var appInfoCall = () => new HttpClient(http).get<IApplicationInfo>(settings.appInfoApi).pipe(
tap(data => {
console.log("APP INITIALIZATION COMPLETE");
settings.appInfo = data;
}));
return appInfoCall;
}
和我的app.module.ts:中的提供者数组
...,
{
provide: APP_INITIALIZER,
useFactory: initApp,
deps: [HttpBackend, HttpClient, AppSettings],
multi: true
}
],
bootstrap: [AppComponent]
从控制台输出中,我可以看到根本没有调用initApp
函数。你知道为什么会这样吗?
由于initApp
预计将注入两个提供程序:
function initApp(http: HttpBackend, settings: AppSettings): () => {
...
}
将APP_INITIALIZER
提供程序(dep
(修改为:
{
provide: APP_INITIALIZER,
useFactory: initApp,
deps: [HttpBackend, AppSettings],
multi: true,
}
StackBlitz 上的示例演示
参考
APP_INITIALIZER(用法说明(