あるページから別のページにプッシュしようとするとエラーが発生します。同じページにプッシュしようとしても、そのエラーは発生しません。あるページから別のページにプッシュするとエラーが発生します。 「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
私は解決策を見つけました。プッシュしようとしているページを親ディレクトリに追加する必要があります。これも@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
});
}
}
コンポーネントをexports[]
の@NgModule
に配置しましたか?またはentryComponents
?
@NgModule({
imports: [
MaterialModule.forRoot(),
],
exports: [
ConfirmDialog,
],
declarations: [
ConfirmDialog,
],
providers: [
DialogsService,
],
entryComponents: [
ConfirmDialog,
],
このようなことができます。
以下を使用して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');
つまり、一重引用符または二重引用符でクラス名を記述します。
引用符で囲まずにしたい場合があります。
let modal = this.modalCtrl.create("SearchPage")
代わりに(間違った):
let modal = this.modalCtrl.create(SearchPage)
エラーは、インポート時にパス内のUpperCaseの文字である可能性があると思います。