#angular #modal-dialog #ng-bootstrap #angular10
#angular #модальный диалог #ng-bootstrap #angular10
Вопрос:
Я обновляю приложение Angluar с версии 9.1.x до версии 10.2.x, а затем обновляю ng-bootstrap до версии 8.x.x. После этого модалы перестали работать, и я получаю сообщение об ошибке в консоли браузера с вопросом, указан ли рассматриваемый компонент какan entryComponent
Это ожидаемое поведение? Насколько я понимаю, entryComponents
в Angular 9 больше не требуется, и действительно, когда мы запускали Angluar v9.1.x и ng-bootstrap v6.x, нам это не нужно.
На самом деле это вопрос «да» или «нет», поэтому я не знаю, какой отладочный код я могу предоставить, кроме чего-то подобного:
@NgModule({
declarations: [
// components
],
imports: [
// imports
],
providers: [
// providers
],
bootstrap: [AppComponent],
entryComponents: [
TestComponent // <-- this used to not be required by ng-bootstrap, and it not required by Angular 9x
// but any calls to NgbModal.open generate an error asking if the TestComponent is in the entry components
]
})
export class AppModule { }
Ответ №1:
Я наконец нашел ответ в документации — не уверен, как я пропустил его раньше. Ответ «да» — когда вы хотите открыть модальный файл с компонентом в качестве содержимого, компонент должен быть в entryComponent
списке вашего модуля Angular.
Вы можете передать существующий компонент в качестве содержимого модального окна. В этом случае не забудьте добавить компонент содержимого в качестве раздела entryComponents вашего NgModule.
Источник: https://ng-bootstrap.github.io/#/components/modal/examples#component
Пример приложения: https://stackblitz.com/edit/h7vehb—run?file=package.json
Их пример приложения работает под управлением Angluar 10.x и ng-bootstrap 8.0