Angular 4: bileşen fabrikası bulunamadı, @NgModule.entryComponents'a eklediniz mi?

Webpack ile Angular 4 şablonu kullanıyorum ve bir bileşen (ConfirmComponent) kullanmaya çalıştığımda bu hatayı alıyorum:

ConfirmComponent için bileşen fabrikası bulunamadı. Şuraya eklediniz mi @NgModule.entryComponents?

Bileşen app.module.server.ts içinde bildirilir

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

Ayrıca app.module.browser.ts ve app.module.shared.ts dosyalarım var

Bunu nasıl düzeltebilirim?

Çözüm

Bunu module.ts dosyanıza ekleyin,

beyanlar: [
  AppComponent,
  ConfirmComponent
]

ConfirmComponent başka bir modüldeyse, onu oraya aktarmanız gerekir, böylece onu dışarıda kullanabilirsiniz, ekleyin:

İhracat: [ ConfirmComponent ]

Dinamik olarak yüklenen bir bileşen söz konusu olduğunda ve bir ComponentFactory'nin oluşturulabilmesi için, bileşenin modülün entryComponents'ına da eklenmesi gerekir:

beyanlar: [
  AppComponent,
  ConfirmComponent
],
entryComponents: [ConfirmComponent],

entryComponents tanımına göre

Bu modül tanımlandığında derlenmesi gereken bileşenlerin bir listesini belirtir. Burada listelenen her bileşen için Angular bir ComponentFactory oluşturacak ve bunu ComponentFactoryResolver'da saklayacaktır.

Yorumlar (12)

Ben de aynı sorunu yaşadım. Bu durumda imports [...] çok önemlidir, çünkü NgbModalModule import etmezseniz çalışmayacaktır.

Hata açıklaması, bileşenlerin entryComponents dizisine eklenmesi gerektiğini söylüyor ve bu açık, ancak bunu ilk etapta eklediğinizden emin olun:

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

uygulamanızda yönlendirme kullanıyorsanız

yönlendirme yoluna yeni bileşenler eklediğinizden emin olun

örneğin:

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