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.

Relaterade artiklar