【问题标题】:Angular 2 - Error when try to import a componentAngular 2 - 尝试导入组件时出错
【发布时间】:2017-11-02 15:00:05
【问题描述】:

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

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

【问题讨论】:

  • 你用谷歌搜索过错误吗?
  • 是的,看到很多解决方案,但错误仍然存​​在或出现不同的错误
  • 什么是DefaultModal?您似乎没有在任何地方导入它
  • 我删除了导入,否则代码很长

标签: angular angular2-routing


【解决方案1】:

感谢@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 {}

我发现模块作为“包”工作,如果您在一个模块中声明多个组件,则在导入该模块时,您会带上所有这些组件的声明,可以毫无问题地使用它们。

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 2017-12-26
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多