Я пытаюсь создать веб-диалог на Agnular6, используя Nebular
компоненты. Это можно сделать двумя способами. Первый - передать <ng-template>
ссылку, например:
openAddDialog = (dialogTemplate: TemplateRef<any>) => {
this.dialogServiceRef = this.dialogService.open(dialogTemplate);
}
и он работает хорошо. Но мне нужно передать компонент в качестве параметра, например:
dialogService.open(MyComponent);
У меня в приложении есть такая структура:
|_ pages
| |_ pages.module.ts
| |_ patient
| |_ patient.module.ts
| |_ patient.component.ts
| |_ patient.component.html
|
|_ shared
|_ shared.module.ts
|_ components
| |_ search-bar.component.ts
| |_ search-bar.component.html
|
|_ modal-form
|_ modal-form.component.ts
|_ modal-from.component.html
Я добавил ModalFormComponent
к declarations
, exports
и entryComponents
в общем модуле. Кроме того, я импортировал его в компонент SearchBar и запускал эту функцию при нажатии кнопки в searchBar:
openAddDialog = () => {
this.dialogServiceRef = this.dialogService.open(ModalFormComponent);
}
и я получил эту ошибку в консоли браузера:
ERROR Error: No component factory found for ModalFormComponent. Did you add it to @NgModule.entryComponents?
at noComponentFactoryError (core.js:19453)
at CodegenComponentFactoryResolver.resolveComponentFactory (core.js:19504)
at NbPortalOutletDirective.attachComponentPortal (portal.js:506)
at NbDialogContainerComponent.attachComponentPortal (index.js:17128)
at NbDialogService.createContent (index.js:17336)
at NbDialogService.open (index.js:17295)
at SearchBarComponent.openAddDialog (search-bar.component.ts:46)
at Object.eval [as handleEvent] (SearchBarComponent.html:11)
at handleEvent (core.js:34777)
at callWithDebugContext (core.js:36395)
Есть мысли о том, в чем проблема и как ее исправить?