Angular 4: nessuna fabbrica di componenti trovata, l'hai aggiunta a @NgModule.entryComponents?

Sto usando il modello Angular 4 con webpack e ho questo errore quando cerco di usare un componente (ConfirmComponent):

No component factory found for ConfirmComponent. L'hai aggiunto a @NgModule.entryComponents?

Il componente è dichiarato in app.module.server.ts ``typescript @NgModule({ bootstrap: [ AppComponent ], imports: [ // ... ], entryComponents: [ ConfirmComponent, ], }) esporta classe AppModule { }



Ho anche `app.module.browser.ts` e `app.module.shared.ts

Come posso risolvere questo problema?
Soluzione

Aggiungete questo nel vostro module.ts, ``typescript dichiarazioni: [ AppComponent, ConfirmComponent ]

se ConfirmComponent è in un altro modulo, è necessario esportarlo lì in modo da poterlo usare all'esterno, aggiungere:
``typescript
esportazioni: [ ConfirmComponent ]

Nel caso di un componente caricato dinamicamente e affinché venga generato un ComponentFactory, il componente deve anche essere aggiunto agli entryComponents del modulo: ``typescript dichiarazioni: [ AppComponent, ConfirmComponent ], entryComponents: [ConfirmComponent],



secondo la definizione di entryComponents

Specifica un elenco di componenti che dovrebbero essere compilati quando questo modulo è definito. Per ogni componente elencato qui, Angular creerà un ComponentFactory e lo memorizzerà nel ComponentFactoryResolver.
Commentari (12)

Ho avuto lo stesso problema. In questo caso importa [...] è cruciale, perché non funzionerà se non importa NgbModalModule.

La descrizione dell'errore dice che i componenti dovrebbero essere aggiunti all'array entryComponents ed è ovvio, ma assicurati di aver aggiunto questo in primo luogo:

imports: [
    ...
    NgbModalModule,
    ...
  ],
Commentari (5)

se usate il routing nella vostra applicazione

assicurati di aggiungere i nuovi componenti nel percorso di routing

per esempio :

    const appRoutes: Routes = [
  { path: '', component: LoginComponent },
  { path: 'home', component: HomeComponent },
  { path: 'fundList',      component: FundListComponent },
];
Commentari (3)