6

我正在尝试将APP_INITIALIZERAngular 集成到我的项目中,以便在启动应用程序之前执行一些功能。当我在我的服务中使用来自 Angular的ActivatedRoute时,问题就出现了。

错误是:

Error: Provider parse errors:
Cannot instantiate cyclic dependency! ApplicationRef ("[ERROR ->]"): in NgModule AppModule in ./AppModule@-1:-1

我想我在内部使用了两次导入或类似的东西。基本上我尝试了其他一些配置,但最后总是给我同样的错误。

堆栈闪电战示例: https ://stackblitz.com/edit/angular-bhpe7m

预期行为:只是为了能够通过 ActivatedRoute 服务检索一些 QueryParams 并在运行 Angular 应用程序之前对它们执行一些功能

4

4 回答 4

12

确保在你的 app.module.ts 中包含 HttpClientModule

import { HttpClientModule } from '@angular/common/http';

@NgModule({
   declarations: [
      AppComponent
   ],
   imports: [
      BrowserModule,
      AppRoutingModule,
      HttpClientModule
   ],
})
export class AppModule { }
于 2020-05-14T12:10:33.357 回答
6

遇到问题只需从“appLoaderService”中删除路由器

  constructor(private route: ActivatedRoute) {} // remove this dependency

由于您在初始化应用程序的配置中注入路由,因此您将获得循环依赖。

参考这个

简单地说,删除它,因为无论如何你都没有使用它。

但是,如果您在加载引导组件之前缩进使用路由,则可以使用解析器或防护。

如前所述,无法在 APP_INITIALIZER 中使用路由,*虽然有办法**,但我最好建议使用 Resolver,如下所示:

resolve(route: ActivatedRouteSnapshot): Promise<any> {
    const promise = new Promise((resolve, reject) => {
      if (route) {
        console.log(route.params);
        console.log(route.queryParams);
      }
 }
return promise;
}

解析器供参考

编辑 以下是将代码放入解析器后您将拥有的内容:

在此处输入图像描述

于 2019-07-25T16:15:33.970 回答
0

这是由于依赖注入中的循环而发生的,例如,您在其构造函数中将服务注入到自身中!

于 2021-11-30T07:22:55.280 回答
-5

我通过使用以下代码更新包来解决它。

ng add @angular/localize
于 2020-08-10T17:31:22.620 回答