我有一个具有这种结构的项目:
app
|
|pages
|Dashboard
|Component1
|UI
|ModalComponent
我想在/ Dashboard / Component1上显示一个ModalComponent,但是当我尝试它时,我有这个错误:
找不到DefaultModal的组件工厂。你有没有添加它 @ NgModule.entryComponents?
我的dashboard.module.ts
import { PieChartService } from './pieChart/pieChart.service';
@NgModule({
imports: [
CommonModule,
FormsModule,
AppTranslationModule,
NgaModule,
routing
],
declarations: [
PieChart,
/..Some components../
],
providers: [
PieChartService,
/..Some services../
]
})
export class DashboardModule {}
我的modal.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { NgbDropdownModule, NgbModalModule } from '@ng-bootstrap/ng-bootstrap';
import { DefaultModal } from './components/modals/default-modal.component';
@NgModule({
imports: [
CommonModule,
FormsModule,
/.../
],
declarations: [
DefaultModal
],
exports: [
DefaultModal
]
})
export class UiModule {
}
我做错了什么?感谢
修改
如果我在DashboardModule中添加entryComponents: [DefaultModal]
,则错误更改为:
组件DefaultModal不是任何NgModule的一部分,或者模块尚未导入模块。
答案 0 :(得分:0)
最后所有的工作都归功于@echonax Directive doesn't work in a submodule
我必须像这样更改我的主要模块:
dashboard.module.ts
import { PieChartService } from './pieChart/pieChart.service';
import { UiModule } from './ui/ui.module'; //<====this line
@NgModule({
imports: [
CommonModule,
FormsModule,
AppTranslationModule,
NgaModule,
UiModule, //<====this line
routing
],
declarations: [
PieChart,
/..Some components../
],
providers: [
PieChartService,
/..Some services../
]
})
export class DashboardModule {}
我发现模块作为“包”工作,如果你在模块中声明了几个组件,那么在导入该模块时,你会带来所有这些组件的声明,能够毫无问题地使用它们。