Angular8: 无法实例化循环依赖 - ActivatedRoute
Angular 8: Cannot instantiate cyclic dependency - ActivatedRoute
我正在尝试将 Angular 中的 APP_INITIALIZER
集成到我的项目中,以便在启动应用程序之前执行一些功能。当我在服务中使用 Angular 中的 ActivatedRoute 时出现问题。
错误是:
Error: Provider parse errors:
Cannot instantiate cyclic dependency! ApplicationRef ("[ERROR ->]"): in NgModule AppModule in ./AppModule@-1:-1
我想我在内部使用了两次导入或类似的东西。基本上我尝试了一些其他配置,但最后总是抛出同样的错误。
STACKBLITZ 示例: https://stackblitz.com/edit/angular-bhpe7m
预期行为:只是为了能够通过 ActivatedRoute 服务检索一些 QueryParams 并在 运行 Angular 应用程序
之前使用它们执行一些功能
遇到问题只需从 '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;
}
Resolver供参考
编辑
这是将代码放入解析器后的结果:
确保在您的 app.module.ts
中包含 HttpClientModule
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule
],
})
export class AppModule { }
我通过使用以下代码更新包解决了这个问题。
ng add @angular/localize
这是由于依赖注入中的循环而发生的,例如,您在其构造函数中将服务注入了自身!
我正在尝试将 Angular 中的 APP_INITIALIZER
集成到我的项目中,以便在启动应用程序之前执行一些功能。当我在服务中使用 Angular 中的 ActivatedRoute 时出现问题。
错误是:
Error: Provider parse errors:
Cannot instantiate cyclic dependency! ApplicationRef ("[ERROR ->]"): in NgModule AppModule in ./AppModule@-1:-1
我想我在内部使用了两次导入或类似的东西。基本上我尝试了一些其他配置,但最后总是抛出同样的错误。
STACKBLITZ 示例: https://stackblitz.com/edit/angular-bhpe7m
预期行为:只是为了能够通过 ActivatedRoute 服务检索一些 QueryParams 并在 运行 Angular 应用程序
之前使用它们执行一些功能遇到问题只需从 '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;
}
Resolver供参考
编辑 这是将代码放入解析器后的结果:
确保在您的 app.module.ts
中包含 HttpClientModuleimport { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule
],
})
export class AppModule { }
我通过使用以下代码更新包解决了这个问题。
ng add @angular/localize
这是由于依赖注入中的循环而发生的,例如,您在其构造函数中将服务注入了自身!