Открытие диалогового окна Nebular из компонента окна Nebular - PullRequest
0 голосов
/ 06 января 2020

Моя структура выглядит следующим образом:

|_ app.module.ts
|_ app.component.ts
|_ admin
|   |_ admin.module.ts
|   |_ admin.component.ts
|   |_ admin.component.html
|   |_ org-tree
|      |_ org-tree.component.ts
|      |_ org-tree.component.html
|      |_ org-edit
|        |_ org-edit.component.ts
|        |_ org-edit.component.html
|        |_ org-delete-dialog
|          |_ org-delete-dialog.component.ts
|          |_ org-delete-dialog.component.html

org-tree отображает иерархический список организаций. При нажатии на любой из них открывается диалоговое окно редактирования через

this.windowService.open(OrgEditComponent, { title: `Edit`, context: { organisation: org } });

Это окно содержит форму с кнопкой сохранения и удаления. Кнопка удаления прикреплена к следующему:

this.dialogService.open(OrgDeleteDialogComponent, {
  context: {
    organisation: this.organisation
  },
  closeOnBackdropClick: false,
});

Нажатие на эту кнопку приводит к следующей ошибке:

ERROR Error: No component factory found for OrgDeleteDialogComponent. Did you add it to @NgModule.entryComponents?    OrgEditComponent.html:138
    at noComponentFactoryError (core.js:19453)
    at CodegenComponentFactoryResolver.resolveComponentFactory (core.js:19504)
    at NbPortalOutletDirective.attachComponentPortal (portal.js:506)
    at NbDialogContainerComponent.attachComponentPortal (index.js:17947)
    at NbDialogService.createContent (index.js:18156)
    at NbDialogService.open (index.js:18114)
    at OrganisationEditComponent.confirmDeleteOrg (organisations-edit.component.ts:43)
    at Object.eval [as handleEvent] (OrganisationEditComponent.html:141)
    at handleEvent (core.js:34777)
    at callWithDebugContext (core.js:36395)

AdminModule is:

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    NbCardModule,
    ThemeModule,
    NbTreeGridModule,
    NbButtonModule,
    NbInputModule,
    NbIconModule,
    NbWindowModule.forChild(),
    NbDialogModule.forChild(),
  ],
  declarations: [
    AdminComponent,
    OrgTreeComponent,
    OrgDeleteDialogComponent,
    OrgEditComponent,
    FsIconComponent,
  ],
  entryComponents: [
    OrgDeleteDialogComponent,
    OrgEditComponent,
  ]
})
export class AdminModule { }

Если я поставлю кнопка, чтобы открыть диалог org-delete-на компоненте org-tree, он открывается нормально, так что я думаю, что это связано с компонентом Window, открывающим компонент Dialog.

Что мне нужно добавить сделать эту работу?

Спасибо.

1 Ответ

0 голосов
/ 15 января 2020

Я изменил код так, чтобы нажатие кнопки в любом месте просто отправляло событие, и это событие было обработано в компоненте org-tree, чтобы открыть фактический диалог.

...