Angular 4: no se ha encontrado ninguna fábrica de componentes, ¿lo has añadido a @NgModule.entryComponents?

Estoy usando una plantilla de Angular 4 con webpack y tengo este error cuando intento usar un componente (ConfirmComponent):

No se ha encontrado ninguna fábrica de componentes para ConfirmComponent. ¿Lo has añadido a

@NgModule.entryComponents?

El componente está declarado en app.module.server.ts. ``typescript @NgModule({ bootstrap: [AppComponent], imports: [ // ... ], entryComponents: [ ConfirmComponent, ], }) export class AppModule { }



También tengo `app.module.browser.ts` y `app.module.shared.ts`.

¿Cómo puedo arreglar eso?
Solución

Añade esto en tu module.ts, ``typescript Declaraciones: [ AppComponent, ConfirmComponent ]

si ConfirmComponent está en otro módulo, necesitas exportarlo allí para poder usarlo fuera, añade:
``typescript
exportaciones: [ ConfirmComponent ]

En el caso de un componente cargado dinámicamente y para que se genere un ComponentFactory, el componente debe añadirse también a los entryComponents del módulo: ``typescript declaraciones: [ AppComponent, ConfirmComponent ], entryComponents: [ConfirmComponent],



según la definición de entryComponents

> Especifica una lista de componentes que deben ser compilados cuando se define este módulo. Para cada componente enumerado aquí, Angular creará un ComponentFactory y lo almacenará en el ComponentFactoryResolver.
Comentarios (12)

He tenido el mismo problema. En este caso imports [...] es crucial, porque no funcionará si no importa NgbModalModule.

La descripción del error dice que los componentes deben ser añadidos al array entryComponents y es obvio, pero asegúrate de que has añadido este en primer lugar:

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

si utiliza el enrutamiento en su aplicación

Asegúrese de añadir nuevos componentes en la ruta de enrutamiento

por ejemplo :

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