尝试从一个页面推送到另一个页面时出错。当我尝试推送到同一页面时,它不会给出错误。只有从一个页面推送到另一个页面时才会出错。 'setRoot()'也没有给出错误。
this.navCtrl.push( Page7 );
我已将Page7添加到app.module.ts。
import { NgModule } from '@angular/core';
import { IonicApp, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { Page1 } from '../pages/page1/page1';
import { Page2 } from '../pages/page2/page2';
import { Page3 } from '../pages/page3/page3';
import { Page4 } from '../pages/page4/page4';
import { Page5 } from '../pages/page5/page5';
import { Page6 } from '../pages/page6/page6';
import { Page7 } from '../pages/page7/page7';
@NgModule({
declarations: [
MyApp,
Page1,
Page2,
Page3,
Page4,
Page5,
Page6,
Page7
],
imports: [
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
Page1,
Page2,
Page3,
Page4,
Page5,
Page6,
Page7
],
providers: []
})
export class AppModule {}
这是一个离子2应用程序。它给出了这个错误。
EXCEPTION: Error in ./Page6 class Page6 - inline template:21:56 caused by: No component factory found for Page7
答案 0 :(得分:34)
我找到了解决方案。您必须将要尝试推送的页面添加到父目录。这也应该包含在@NgModule中。
import {ApiServices} from '../../providers/api-services';
import { Visualizer } from '../Page7/Page7';
@Component({
selector: 'page-page6',
templateUrl: 'page6.html',
providers: [ ApiServices ],
entryComponents:[ Page7 ]
})
export class Page6 {
tapped(event, id ) {
this.navCtrl.push( Page7,{
id: id
});
}
}
答案 1 :(得分:17)
Have you put your component in exports[]
in its @NgModule
? or entryComponents
?
@NgModule({
imports: [
MaterialModule.forRoot(),
],
exports: [
ConfirmDialog,
],
declarations: [
ConfirmDialog,
],
providers: [
DialogsService,
],
entryComponents: [
ConfirmDialog,
],
答案 2 :(得分:4)
你可以这样做。
导入或创建 home.module.ts 后,
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { HomePage } from './home';
@NgModule({
declarations: [
HomePage,
],
imports: [
IonicPageModule.forChild(HomePage),
],
})
export class HomePageModule {}
删除所有导入页面链接。例如,
import { HomePage } from '../pages/home/home';
然后,替换页面链接,如
rootPage:any = HomePage; rootPage:any =' HomePage';
或者,
this.navCtrl.push(HomePage); this.navCtrl.push(' HomePage');
即。在单引号或双引号中写类名。
答案 3 :(得分:3)
您可能不希望将其放在引号中:
let modal = this.modalCtrl.create("SearchPage")
而不是(不正确):
let modal = this.modalCtrl.create(SearchPage)
答案 4 :(得分:0)
我认为错误可能是您导入时路径中的UpperCase字母,这对我来说很有用。