Angular 9 Невозможно создать циклическую зависимость! ApplicationRef

Обновление до Angular 9 с 8 вызвало ошибку циклической зависимости

Я только что обновился до 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?


person millerbill3    schedule 27.04.2020    source источник
comment
вы тоже пытались обновить зависимости?   -  person Guruprasad J Rao    schedule 27.04.2020
comment
Определенно обновленные зависимости... включая ng-bootstrap   -  person millerbill3    schedule 28.04.2020
comment
Это может помочь   -  person Guruprasad J Rao    schedule 28.04.2020
comment
Спасибо, Гурупрасад, я просмотрел эту конкретную публикацию об ошибке и не думаю, что это относится ко мне. Я не думаю, что ошибка генерируется в какой-либо службе инициализации приложений, и я использую Angular 9.1.3.   -  person millerbill3    schedule 28.04.2020


Ответы (2)


Удалить любую службу, которая внедряет службу NgbModal. Во время инициализации приложения

в моем случае я вводил его в службу загрузчика.

Поэтому я удалил службу загрузчика из приложения-инициализатора и внедрил службу загрузчика в app.component.ts.

Это сработало.

person Akhilesh Rai    schedule 06.05.2020

Я нахожу это решение:

Не вводить напрямую в конструктор NgModal, через Injector:

private modalService: NgbModal
constructor(private injector: Injector) {}

showModal() {
   // Inject the dependency of NgbModal 
   this.modalService = this.injector.get(NgbModal);
   this.modalService.open();
}
person Gustavo Marquez    schedule 09.02.2021