Angular 2 - 尝试导入组件时出错

时间:2017-06-01 12:44:44

标签: angular angular2-routing

我有一个具有这种结构的项目:

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的一部分,或者模块尚未导入模块。

1 个答案:

答案 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 {}

我发现模块作为“包”工作,如果你在模块中声明了几个组件,那么在导入该模块时,你会带来所有这些组件的声明,能够毫无问题地使用它们。