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?
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.
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,
...
],
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 },
];