Използвам Angular 4 шаблон с Webpack и имам тази грешка, когато се опитам да използвам компонент (ConfirmComponent):
Не е намерена фабрика за компоненти за ConfirmComponent. Добавихте ли го в @NgModule.entryComponents?
Компонентът е деклариран в app.module.server.ts
@NgModule({
bootstrap: [ AppComponent ],
imports: [
// ...
],
entryComponents: [
ConfirmComponent,
],
})
Експорт на клас AppModule { }
Имам също така app.module.browser.ts
и app.module.shared.ts
Как мога да поправя това?
Добавете това във вашия module.ts
,
Декларации: [
AppComponent,
ConfirmComponent
]
ако ConfirmComponent е в друг модул, трябва да го експортирате там, за да можете да го използвате извън него, добавете:
exports: [ ConfirmComponent ]
В случай на динамично зареждан компонент и за да бъде генерирана ComponentFactory, компонентът трябва да бъде добавен и към entryComponents на модула:
Декларации: [
AppComponent,
ConfirmComponent
],
entryComponents: [ConfirmComponent],
съгласно дефиницията на entryComponents
Указва списък на компонентите, които трябва да бъдат компилирани, когато този модул е дефиниран. За всеки компонент, посочен тук, Angular ще създаде ComponentFactory и ще го съхрани в ComponentFactoryResolver.
Имах същия проблем. В този случай imports [...]
е от решаващо значение, защото няма да работи, ако не импортирате NgbModalModule
.
В описанието на грешката се казва, че компонентите трябва да се добавят в масива entryComponents
и това е очевидно, но се уверете, че сте добавили този масив на първо място:
imports: [
...
NgbModalModule,
...
],
ако използвате маршрутизация в приложението си
уверете се, че добавяте нови компоненти в пътя за маршрутизиране
например:
const appRoutes: Routes = [
{ path: '', component: LoginComponent },
{ path: 'home', component: HomeComponent },
{ path: 'fundList', component: FundListComponent },
];