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();
}