小编典典

Angular 4:未找到组件工厂,您是否将其添加到 @NgModule.entryComponents?

all

我正在使用带有 webpack 的 Angular 4 模板,当我尝试使用组件(ConfirmComponent)时出现此错误:

未找到 ConfirmComponent 的组件工厂。你把它添加到@NgModule.entryComponents 了吗?

组件声明在app.module.server.ts

@NgModule({
  bootstrap: [ AppComponent ],
  imports: [
    // ...
  ],
  entryComponents: [
    ConfirmComponent,
  ],
})
export class AppModule { }

我也 app.module.browser.tsapp.module.shared.ts

我该如何解决?


阅读 209

收藏
2022-03-30

共1个答案

小编典典

将此添加到您的module.ts,

declarations: [
  AppComponent,
  ConfirmComponent
]

如果 ConfirmComponent 在另一个模块中,您需要将其导出到那里,以便您可以在外部使用它,添加:

exports: [ ConfirmComponent ]

-–更新 Angular 9 或 Angular 8 并明确启用 Ivy —

不再需要使用 Ivy 的入口组件,现在已弃用

-–对于禁用常春藤的 Angular 9 和 8—

在动态加载组件的情况下,为了生成 ComponentFactory,还必须将组件添加到模块的 entryComponents 中:

declarations: [
  AppComponent,
  ConfirmComponent
],
entryComponents: [ConfirmComponent],

根据entryComponents的定义

指定定义此模块时应编译的组件列表。对于这里列出的每个组件,Angular 都会创建一个 ComponentFactory 并将其存储在
ComponentFactoryResolver 中。

2022-03-30