5

我有ngx-bootstrap模态组件。此模式在shared文件夹内使用。FirstModalComponent我喜欢使用它DashboardModule

// 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的 as 模块,我应该如何在 my 中实现它并在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 { }

然后我将其导入/导出ModalsModuleSharedModule尝试将共享模块导入DashboardModule.

我现在如何在 Dashboard 中注入我FirstModalComponent的 to ?entryComponents

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

PS我不确定将其作为模块是一个好主意..

4

1 回答 1

2

你应该声明FirstModalComponentin only one module。它可以是一个模块的一部分并由同一个模块导出,并且可以定义entryComponent为它自己的模块。

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

entryComponents: [ FirstModalComponent ]

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

确保这FirstModalModule是由您导出的ModalsModuleSharedModule具体取决于您的使用。如果您想通过导入来使用它SharedModuleDashboardModule则必须从SharedModule.

于 2019-03-22T18:19:17.490 回答