“找不到组件工厂”错误尝试从一个页面推送到另一个页面时

时间:2016-10-05 10:20:42

标签: angular ionic2

尝试从一个页面推送到另一个页面时出错。当我尝试推送到同一页面时,它不会给出错误。只有从一个页面推送到另一个页面时才会出错。 '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

console error

5 个答案:

答案 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字母,这对我来说很有用。