Jga*_*ona 6 cyclic-dependency angular
我正在尝试将APP_INITIALIZERAngular集成到我的项目中,以便在启动应用程序之前执行一些功能。当我在我的服务中使用来自 Angular的ActivatedRoute时,问题就出现了。
错误是:
Error: Provider parse errors:
Cannot instantiate cyclic dependency! ApplicationRef ("[ERROR ->]"): in NgModule AppModule in ./AppModule@-1:-1
Run Code Online (Sandbox Code Playgroud)
我想我在内部使用了两次导入或类似的东西。基本上我尝试了一些其他配置,但最后总是抛出同样的错误。
STACKBLITZ 示例: https ://stackblitz.com/edit/angular-bhpe7m
预期行为:只是为了能够通过 ActivatedRoute 服务检索一些 QueryParams 并在运行 Angular 应用程序之前使用它们执行一些功能
小智 12
确保在 app.module.ts 中包含 HttpClientModule
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule
],
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
解决您的问题,只需从您的“appLoaderService”中删除路由器
constructor(private route: ActivatedRoute) {} // remove this dependency
Run Code Online (Sandbox Code Playgroud)
由于您在初始化应用程序的配置中注入路由,因此您将获得循环依赖。
简单地,删除它,因为您无论如何都没有使用它。
但是,如果您在引导组件加载之前缩进使用路由,则可以使用解析器或防护。
如前所述,不可能在 APP_INITIALIZER 中使用路由,*虽然有办法**,但我最好建议使用解析器,如下所示:
resolve(route: ActivatedRouteSnapshot): Promise<any> {
const promise = new Promise((resolve, reject) => {
if (route) {
console.log(route.params);
console.log(route.queryParams);
}
}
return promise;
}
Run Code Online (Sandbox Code Playgroud)
参考解析器
编辑 这是将代码放入解析器后您将拥有的内容:
| 归档时间: |
|
| 查看次数: |
31756 次 |
| 最近记录: |