1. ホーム
  2. angular

[解決済み] Angular 4: コンポーネントファクトリが見つかりません。@NgModule.entryComponents に追加しましたか?

2022-01-25 04:26:04

質問

Angular 4のテンプレートとwebpackを使用しています。 で、コンポーネント(ConfirmComponent)を使おうとすると、このエラーが発生します。

ConfirmComponent のコンポーネントファクトリが見つかりませんでした。 に追加しましたか? NgModule.entryComponents?

このコンポーネントは app.module.server.ts

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

また app.module.browser.tsapp.module.shared.ts

どうすれば直るのでしょうか?

どのように解決するのですか?

これを module.ts ,

declarations: [
  AppComponent,
  ConfirmComponent
]

ConfirmComponentが他のモジュールにある場合は、そこにエクスポートして、外部で使用できるようにする必要があります。

exports: [ ConfirmComponent ]

---Ivy を明示的に有効にして Angular 9 または Angular 8 を更新する---。

Ivyを使用したエントリーコンポーネントは必要なくなり、現在では非推奨となっています。

---Ivyを無効にしたAngular 9および8向け---。

動的に読み込まれるコンポーネントの場合、ComponentFactory を生成するためには、モジュールの entryComponents にコンポーネントを追加する必要があります。

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

entryComponentsの定義によると

このモジュールが定義されたときにコンパイルされるべきコンポーネントのリストを指定します。ここに記載された各コンポーネントに対して、AngularはComponentFactoryを作成し、ComponentFactoryResolverに格納します。