javascript - Kan inte ladda komponent på sidan - Angular 4/Ionic 3
En knapp visas på sidan. När användaren väljer knappen kommer barnkomponenten att visas, men följande felmeddelande visas - Fel: Uncaught (in promise): Fel: Ingen komponentfabrik hittades för ModalComponent. Har du lagt till den i @NgModule.entryComponents?
Strukturen jag har satt upp är som följer och detta är i samband med Ionic 3 -
app (folder)
- app.module
- app.component
components (folder)
- modal-component.ts
pages (folder)
- pageOne (folder)
- pageOne.module
- pageOne.ts
Jag satte modal-komponenten i pageOne.module
pageOne.modul
@NgModule({
declarations: [
pageOne,
modalComponent
],
entryComponents: [
modalComponent
],
imports: [
IonicPageModule.forChild(pageOne),
],
exports: [
pageOne,
]
})
export class pageOneModule {}
pageOne.ts
@IonicPage()
@Component({
selector: 'pageOne',
templateUrl: 'pageOne.html',
})
export class pageOne {}
Svar #1
Startar du ditt modul?
lägg detta någonstans där det kommer att laddas
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { pageOneModule } from './pages/pageOne/pageOne.module';
document.addEventListener('DOMContentLoaded', () => {
platformBrowserDynamic().bootstrapModule(pageOneModule)
.catch(err => console.log(err));
});
Jag skulle också föreslå att använda Angular CLI, det gör den här typen av saker åt dig.
Svar #2
Din Pages-modul är inte inställd korrekt för lazy loading. Jag är inte säker på vad som exakt orsakar felet, men när du lazy loadar exporterar eller deklarerar du inte entry-komponenterna. Ändra din pages-modul till:
@NgModule({
declarations: [
pageOne,
modalComponent ],
imports: [ IonicPageModule.forChild(pageOne) ]
})
export class pageOneModule {}
Nu, du publicerade inte din modal-komponentkod så jag är inte säker på om det är något du har gjort eller inte. Om det är något som Material2 modals, måste de vara i entryComponents. Dessutom bör dina Nav-stacks nu använda sidans strängnamn, inte en import, för att säkerställa att du laddar samma objekt istället för att klona det.
