Angular9 无法实例化循环依赖!申请编号
Angular 9 Cannot instantiate cyclic dependency! ApplicationRef
从 8 更新到 Angular9 导致循环依赖错误
我刚刚升级到 Angular 9,我已经修复了所有编译错误。现在我收到一个与我无法追踪的循环依赖相关的错误。
Error: Cannot instantiate cyclic dependency! ApplicationRef
at throwCyclicDependencyError (core.js:8072)
at R3Injector.hydrate (core.js:17049)
at R3Injector.get (core.js:16803)
at injectInjectorOnly (core.js:940)
at ɵɵinject (core.js:950)
at Object.NgbModalStack_Factory [as factory] (ng-bootstrap.js:6262)
at R3Injector.hydrate (core.js:17053)
at R3Injector.get (core.js:16803)
at injectInjectorOnly (core.js:940)
at Module.ɵɵinject (core.js:950)
如果我查看 ng-bootstrap.js:6262 代码块,它似乎指的是 NgbModal 组件
NgbModalStack.ɵprov = ɵɵdefineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT), ɵɵinject(ScrollBar), ɵɵinject(RendererFactory2), ɵɵinject(NgZone)); }, token: NgbModalStack, providedIn: "root" });
NgbModalStack = __decorate([ __param(2, Inject(DOCUMENT))
], NgbModalStack);
这可能与特定错误没有直接关系,但我看不出任何可能导致此问题的原因。
任何人都想过是什么导致了这种情况,或者它可能是 Angular Bootstrap 库中的错误?
删除正在注入 NgbModal
服务的任何服务。在应用程序初始化期间
在我的例子中,我将它注入到加载程序服务中。
所以我从 app-initilizer 中删除了加载器服务并将加载器服务注入 app.component.ts
成功了。
我找到了这个解决方案:
不要直接在构造函数中注入NgModal,通过Injector:
private modalService: NgbModal
constructor(private injector: Injector) {}
showModal() {
// Inject the dependency of NgbModal
this.modalService = this.injector.get(NgbModal);
this.modalService.open();
}
从 8 更新到 Angular9 导致循环依赖错误
我刚刚升级到 Angular 9,我已经修复了所有编译错误。现在我收到一个与我无法追踪的循环依赖相关的错误。
Error: Cannot instantiate cyclic dependency! ApplicationRef
at throwCyclicDependencyError (core.js:8072)
at R3Injector.hydrate (core.js:17049)
at R3Injector.get (core.js:16803)
at injectInjectorOnly (core.js:940)
at ɵɵinject (core.js:950)
at Object.NgbModalStack_Factory [as factory] (ng-bootstrap.js:6262)
at R3Injector.hydrate (core.js:17053)
at R3Injector.get (core.js:16803)
at injectInjectorOnly (core.js:940)
at Module.ɵɵinject (core.js:950)
如果我查看 ng-bootstrap.js:6262 代码块,它似乎指的是 NgbModal 组件
NgbModalStack.ɵprov = ɵɵdefineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT), ɵɵinject(ScrollBar), ɵɵinject(RendererFactory2), ɵɵinject(NgZone)); }, token: NgbModalStack, providedIn: "root" });
NgbModalStack = __decorate([ __param(2, Inject(DOCUMENT))
], NgbModalStack);
这可能与特定错误没有直接关系,但我看不出任何可能导致此问题的原因。 任何人都想过是什么导致了这种情况,或者它可能是 Angular Bootstrap 库中的错误?
删除正在注入 NgbModal
服务的任何服务。在应用程序初始化期间
在我的例子中,我将它注入到加载程序服务中。
所以我从 app-initilizer 中删除了加载器服务并将加载器服务注入 app.component.ts
成功了。
我找到了这个解决方案:
不要直接在构造函数中注入NgModal,通过Injector:
private modalService: NgbModal
constructor(private injector: Injector) {}
showModal() {
// Inject the dependency of NgbModal
this.modalService = this.injector.get(NgbModal);
this.modalService.open();
}