Angular 4: nenhuma fábrica de componentes encontrada,você adicionou a @NgModule.entryComponents?

I'm usando o modelo Angular 4 com webpack e eu tenho este erro quando tento usar um componente (ConfirmComponent):

Nenhuma fábrica de componentes encontrada para ConfirmComponent. Você o adicionou ao @NgModule.entryComponentes?

O componente é declarado em `app.module.server.ts'.

@NgModule({
  Calça de botas: ..,
  importações: [
    // ...
  ],
  entryComponents: [
    ConfirmeComponente,
  ],
})
classe de exportação AppModule { }

Também tenho app.module.browser.ts' eapp.module.shared.ts'.

Como posso resolver isso?

Solução

Adicione isto no seu module.ts,

declarações: [
  AppComponent,
  ConfirmeComponente
]

Se o ConfirmComponent estiver em outro módulo, você precisa exportá-lo para lá, assim você pode usá-lo lá fora, adicionar:

exportações: ConfirmComponente

No caso de um componente carregado dinamicamente e para que um ComponentFactory possa ser gerado, o componente também deve ser adicionado à entrada Componentes do módulo:

declarações: [
  AppComponent,
  ConfirmeComponente
],
entryComponents: [ConfirmarComponente],

de acordo com a definição de entradaComponentes

Especifica uma lista de componentes que devem ser compilados quando este módulo é definido. Para cada componente listado aqui, a Angular irá criar um ComponentFactory e armazená-lo no ComponentFactoryResolver.

Comentários (12)

Eu tinha o mesmo problema. Neste caso, a importação [...]importa [...]é crucial, porque ganhou'não funciona se você não'não importa NgbModalModule.

A descrição do erro diz que os componentes devem ser adicionados ao array `entryComponents' e é óbvio, mas certifique-se de ter adicionado este em primeiro lugar:

imports: [
    ...
    NgbModalModule,
    ...
  ],
Comentários (5)

**Se você usar roteamento em sua aplicação***

**Certo Adicionar novos componentes ao caminho de roteamento***

por exemplo :

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