angular - ข้อผิดพลาด @NgModule.entryComponents
ฉันมีโค้ด:
////////////////login.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { LoginPage } from './login';
@NgModule({
declarations: [
LoginPage,
],
imports: [
IonicPageModule.forChild(LoginPage),
],
})
export class LoginPageModule {}
////////////////// login.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
constructor(public navCtrl: NavController, public navParams: NavParams) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad LoginPage');
}
doLogin(){
this.navCtrl.setRoot('SpecialPage')
}
}
/////////////////login.html
<ion-content padding>
<button ion-button full (click)="doLogin()">Login</button>
</ion-content>
//////////////// special.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { SpecialPage } from './special';
import { HomePage } from '../home/home';
@NgModule({
declarations: [
SpecialPage,
HomePage
],
entryComponents: [
SpecialPage,
HomePage
],
imports: [
IonicPageModule.forChild(SpecialPage),
],
})
export class SpecialPageModule {}
//////////////// special.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { HomePage } from '../home/home';
@IonicPage()
@Component({
selector: 'page-special',
templateUrl: 'special.html',
})
export class SpecialPage {
tab1Root = HomePage;
myIndex : number;
constructor(public navCtrl: NavController, public navParams: NavParams) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad SpecialPage');
}
}
/////////////////// special.html
<ion-tabs [selectedIndex]="myIndex">
<ion-tab [root]="tab1Root" tabTitle="Home" tabIcon="home"></ion-tab>
</ion-tabs>
/////////////// home.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController) {
}
}และฉันได้รับข้อผิดพลาด: Runtime Error Uncaught (in promise): Error: ไม่พบแฟกทอรีคอมโพเนนต์สำหรับ HomePage คุณได้เพิ่มมันเข้าไปใน @NgModule.entryComponents หรือไม่? Error: ไม่พบแฟกทอรีคอมโพเนนต์สำหรับ HomePage คุณได้เพิ่มมันเข้าไปใน @NgModule.entryComponents หรือไม่? ที่ noComponentFactoryError (http://localhost:8101/build/vendor.js:3682:34) ที่ _NullComponentFactoryResolver.resolveComponentFactory (http://localhost:8101/build/vendor.js:3700:15) ที่ CodegenComponentFactoryResolver.resolveComponentFactory
ช่วยด้วยครับ มีอะไรผิดหรือเปล่า ผมรวมหน้าหลักเข้าไปใน entryComponents แล้ว แต่ก็ยังมีข้อผิดพลาดอยู่
คำตอบ #1
คุณจำเป็นต้องลบ HomePage ออกจากโมดูล special.module.ts คุณควรเพิ่มมันเพียงแค่ใน app.module.ts เนื่องจากคุณไม่ได้ใช้ lazy loading กับคอมโพเนนต์ home
special.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { SpecialPage } from './special';
//import { HomePage } from '../home/home'; --> remove this
@NgModule({
declarations: [
SpecialPage,
//HomePage --> remove this
],
entryComponents: [
SpecialPage,
//HomePage --> remove this
],
imports: [
IonicPageModule.forChild(SpecialPage),
],
})
export class SpecialPageModule {}
