如何在 entryComponents 另一个模块中使用模块中的组件?

How to use component from module in entryComponents another module?

我有 ngx-bootstrap 模态组件。此模式在 shared 文件夹中使用。我在我的 DashboardModule 中使用这个 FirstModalComponent,例如:

// Dashboard.module.ts
import { FirstModalComponent } from '../../shared/modals/first-modal/first-modal.component';

@NgModule({
  declarations: [
    DashboardComponent
  ],
  imports: [
    CommonModule,
    ReactiveFormsModule,
    RouterModule.forChild(routes),
    SharedModule
  ],
  entryComponents: [
    FirstModalComponent 
  ]
});

如果我想将我的 FirstModalComponent 作为模块,我应该如何在我的 DashboardModule 中实现它并在 entryComponents 中定义它?

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

import { FirstModalModule } from './first-modal/first-modal.module';

@NgModule({
  declarations: [],
  imports: [
    CommonModule,
    FirstModalModule
  ],
  exports: [
    CommonModule,
    FirstModalModule
  ]
})
export class ModalsModule { }

然后我 import/export SharedModule 中的这个 ModalsModule 并尝试将共享模块导入 DashboardModule.

现在如何在仪表板中将我的 FirstModalComponent 注入到 entryComponents

当我尝试导入 FirstModalComponent 并放入 entryComponents 时出现错误:Component is part of the declaration of 2 modules.

P.S。我不确定将其作为模块是个好主意..

您应该只在一个 module 中声明 FirstModalComponent。它可以是一个模块的一部分并由同一模块导出,并且可以定义为 entryComponent 用于它自己的模块。

对于您的情况,将其声明为

entryComponents: [ FirstModalComponent ]

用于 FirstModalModule 并从 FirstModalModule 导出 FirstModalComponent。当您在 ModalsModule 或应用程序中的任何其他模块中导入 FirstModalModule 时,它将按预期工作。

确保此 FirstModalModule 由您的 ModalsModuleSharedModule 导出,具体取决于您的用途。如果您想通过将 SharedModule 导入 DashboardModule 来使用它,则必须从 SharedModule.

导出