Angular - 未调用应用初始化程序
Angular - app initializer not being called
我对 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,
}
参考
我对 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,
}
参考