Angular &引用;未找到“的组件工厂”;尝试从一页推送到另一页时出错

Angular &引用;未找到“的组件工厂”;尝试从一页推送到另一页时出错,angular,ionic2,Angular,Ionic2,我在尝试从一页推到另一页时出错。当我尝试推到同一页时,它不会给出那个错误。只有我在从一页推到另一页时出错。”setRoot()'也没有给出错误 this.navCtrl.push( Page7 ); 我已将第7页添加到app.module.ts import { NgModule } from '@angular/core'; import { IonicApp, IonicModule } from 'ionic-angular'; import { MyApp } from './app.

我在尝试从一页推到另一页时出错。当我尝试推到同一页时,它不会给出那个错误。只有我在从一页推到另一页时出错。”setRoot()'也没有给出错误

this.navCtrl.push( Page7 );
我已将第7页添加到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

我找到了解决办法。您必须将要推送的页面添加到父目录中。这也应该包括在@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
      });
    }
}      

我认为导入时,错误可能是路径中的大写字母,这对我来说很有用

您是否已将组件放入其
@NgModule
中的
导出[]
?或
entryComponents

@NgModule({
    imports: [
        MaterialModule.forRoot(),
    ],
    exports: [
        ConfirmDialog,
    ],
    declarations: [
        ConfirmDialog,
    ],
    providers: [
        DialogsService,
    ],
    entryComponents: [
        ConfirmDialog,
    ],

你可能不想把它放在引号里:

let modal = this.modalCtrl.create("SearchPage")
而不是(不正确):


你可以这样做

导入或创建带有以下内容的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=主页; 使用rootPage:any='HomePage'

或者

this.navCtrl.push(主页);使用this.navCtrl.push('HomePage')


i、 e.用单引号或双引号写类名。

更具体地说,您必须将页面添加到“entryComponents”列表中。不管您是使用组件装饰器的“entryComponents”属性还是在与NgModule装饰器相关的“entryComponents”属性中执行此操作。所有页面都必须以某种方式显示在此列表中。否则angular不会为此组件创建工厂。Ionic文档/Angular文档对此并不清楚。如果你把源代码放进去也没关系,但是大写字母确实在angulars提前编译(AoT)时起到了作用。小心点。爱奥尼亚2.0.0这个问题已经解决了。看起来你的代码不完整,不是吗?另外,您在提出问题后提供了代码,因此并不清楚您提供的代码到底是做什么的。请澄清。我把它放在了NGM模块上。没有必要增加出口。只需要加上减让和进入部分。是的,这个过程在我的情况下也起了作用。有3个地方应该提到组件:1。然后在导入组件时,2。加上“减让”和3。@NgModule中的外接程序入口组件。就是这样。
rootPage:any=主页;使用rootPage:any='HomePage'-如果我没有遗漏页面名称周围的引号,我本可以省下一些头发
import { HomePage } from '../pages/home/home';