web-dev-qa-db-ja.com

1つのページから別のページにプッシュしようとすると、「コンポーネントファクトリが見つかりません」エラー

あるページから別のページにプッシュしようとするとエラーが発生します。同じページにプッシュしようとしても、そのエラーは発生しません。あるページから別のページにプッシュするとエラーが発生します。 「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 {}

これはionic 2アプリケーションです。このエラーが発生します。

EXCEPTION: Error in ./Page6 class Page6 - inline template:21:56 caused by: No component factory found for Page7

コンソールエラー

23
Sadam Chami

私は解決策を見つけました。プッシュしようとしているページを親ディレクトリに追加する必要があります。これも@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
      });
    }
}      
34
Sadam Chami

コンポーネントをexports[]@NgModuleに配置しましたか?またはentryComponents

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

このようなことができます。

以下を使用して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;with rootPage:any = 'HomePage';

または、

this.navCtrl.Push(HomePage);with this.navCtrl.Push( 'HomePage');

つまり、一重引用符または二重引用符でクラス名を記述します。

4
Deb

引用符で囲まずにしたい場合があります。

let modal = this.modalCtrl.create("SearchPage")

代わりに(間違った):

let modal = this.modalCtrl.create(SearchPage)
3
Nico

エラーは、インポート時にパス内のUpperCaseの文字である可能性があると思います。

0
Sergio182k