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,
}

Sample Demo on StackBlitz


参考

APP_INITIALIZER (Usage note)