Mai mult
Unghiulare 4: nici o fabrică de componente de găsit,nu-l adăugați la @NgModule.entryComponents?
Am'm folosind Unghiulare 4 șablon cu webpack si eu am aceasta eroare atunci când încercați să utilizați o componentă (ConfirmComponent):
Nici o fabrică de componente de găsit pentru ConfirmComponent. Ai adăuga la @NgModule.entryComponents?
Componenta este declarată în app.module.server.ts
typescript @NgModule({ bootstrap: [ AppComponent ], importuri: [ // ... ], entryComponents: [ ConfirmComponent, ], }) export clasa AppModule { }
Am, de asemenea, app.module.browser-ul.ts " și " app.module.comună.ts`
Cum pot repara asta?
231
17
Adăuga acest lucru în modul.ts`,
typescript declarații: [ AppComponent, ConfirmComponent ]
dacă ConfirmComponent este într-un alt modul, aveți nevoie pentru a exporta există, prin urmare, îl puteți folosi în afara, adauga:typescript exporturi: [ ConfirmComponent ]
În cazul unui încărcate dinamic component și pentru o ComponentFactory să fie generate, componenta trebuie să fie, de asemenea, adăugate la modulul entryComponents:
typescript declarații: [ AppComponent, ConfirmComponent ], entryComponents: [ConfirmComponent],
în conformitate cu definiția de entryComponents
Vezi detalii despre entryComponent`:
Dacă încărcați orice component dinamic, atunci ai nevoie să-l pună în ambele declarații " și " entryComponent`:
typescript @NgModule({ importuri: [...], exporturi: [...], entryComponents: [ConfirmComponent,..], declarații: [ConfirmComponent,...], furnizori: [...] })
TL;DR: UN serviciu în ng6 cu providedIn: "rădăcină"
nu pot găsi ComponentFactory când Componenta nu este adăugat în anii
entryComponents` de app.modulul de.Această problemă poate apărea, de asemenea, dacă utilizați unghiulare 6 în combinație cu dinamic crearea unui Component într-un serviciu!
De exemplu, crearea unui Overlay:
``typescript @Injectabile({ providedIn: "rădăcină" }) export clasa OverlayService {
constructor(privat _overlay: Suprapunere) {}
openOverlay() { const overlayRef = acest lucru._createOverlay(); const portal = new ComponentPortal(OverlayExampleComponent);
overlayRef.atașați(portal).exemplu; } } `` Problema este
definiție, care oferă acest serviciu în app.modulul de.
Deci, dacă serviciul este situat în, de exemplu, "OverlayModule", în cazul în care aveți, de asemenea, a declarat OverlayExampleComponent și-a adăugat la entryComponents, serviciul nu poate găsi ComponentFactory pentru OverlayExampleComponent.
Am avut aceeasi problema. În acest caz, importul [...]
este crucial, pentru că nu o't de lucru, dacă nu't import
NgbModalModule`.Descriere eroare spune că componente ar trebui să fie adăugate la
entryComponents
matrice și este evident, dar asigurați-vă că ați adăugat-o pe asta, în primul rând:Adaugă componenta a entryComponents în @NgModule de aplicația's modul:
precum și Declarații:
Adăugați 'NgbModalModule' importurilor și componenta nume în entryComponents App.module.ts așa cum se arată mai jos
Am aceeasi problema cu unghiulară 6, ca's ceea ce a lucrat pentru mine :
Dacă aveți un serviciu, cum ar fi ConfirmService, avea să declare la furnizorii de modul curent în loc de root
Locul componente care sunt create în mod dinamic pentru a entryComponents sub @NgModuledecorator funcție.
Am avut aceeasi problema pentru bootstrap modal
Dacă acesta este cazul dvs., trebuie doar să adăugați componenta modulul declarații și entryComponents ca alte răspunsuri sugerează, dar, de asemenea, adăuga acest la modul
Această eroare se produce atunci când încercați să încărcați un component dinamic și:
în routingModule
sau, în modul de
Pentru a rezolva această eroare, puteți adăuga un router la componenta sau adăugați-l la entryComponents de module.
Am avut aceeași problemă în Angular7 când am crea componente dinamice. Există două componente(TreatListComponent, MyTreatComponent) care trebuie să fie încărcate dinamic. Am adăugat doar entryComponents matrice în aplicația mea.module.ts fișier.
],
dacă utilizați rutare în aplicație
de exemplu :
Am fost obtinerea aceeasi problema cu ag-grid folosind componente dinamice. Am descoperit aveți nevoie să adăugați o componentă dinamică a ag-modul de rețea .withComponents[]
importuri: [ StratoMaterialModule, BrowserModule, AppRoutingModule, HttpClientModule, BrowserAnimationsModule, NgbModule.forRoot(), FormsModule, ReactiveFormsModule, AppRoutingModule, AgGridModule.withComponents(ProjectUpdateButtonComponent) ],
În cazul meu am n't nevoie de entryComponents la toate - doar configurare de bază descrise în link-ul de mai jos, dar am nevoie pentru a include import, atât în app principal și modulul de la inchiderea modulului.
https://medium.com/@sunilk/getting-started-angular-6-and-ng-bootstrap-4-4b314e015c1c
Trebuie doar să adăugați-l la entryComponents dacă o componentă vor fi incluse în modal. Din documente:
Eroarea mea a fost de asteptare NgbModal metoda deschisă incorecte a parametrilor de .html
Pentru clarificare aici. În cazul în care nu utilizați
ComponentFactoryResolver
direct în componentă, și doriți să rezumat la serviciu, care este apoi injectat in componenta trebuie să-l încarce sub furnizorii pentru modulul respectiv, deoarece în cazul în care încărcate leneș nu va't de lucru.În caz că încă mai au de eroare după furnizarea de componentei de dialog clasă în
entryComponents
, încercați să repornițing servi
- ea a lucrat pentru mine.