Angular 4: コンポーネント ファクトリーが見つかりません。@NgModule.entryComponents に追加しましたか? 質問する

Angular 4: コンポーネント ファクトリーが見つかりません。@NgModule.entryComponents に追加しましたか? 質問する

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

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

コンポーネントは次のように宣言されますapp.module.server.ts

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

私もapp.module.browser.tsまたapp.module.shared.ts

どうすれば修正できますか?

ベストアンサー1

これをあなたのに追加してください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 に格納します。

おすすめ記事