2016-09-30 5 views
0

Page A =ログイン;Ionic2:ページAからページBにナビゲートすることはできませんが、ページAからC、次にBまで

Page B =ようこそ;

Page C =リスト;

違反コンポーネント= DefaultPopover;

基本的には、ウェルカムページからコンポーネントを削除したり、DefaultPopoverからログアウト機能をコメントアウトしたりしない限り、ページAからページBにナビゲートできません。

同じコンポーネントがページCで正常に動作します。ページA - >ページCから移動すると、ページBに移動できます。 DefaultPopoverでは、WelcomeControllerを指すようにログアウトを変更するとすべて正常に動作します。私は何が起こっているのか分からない。

私は

ログインコントローラ

import {ToastController, NavController, List} from 'ionic-angular/index'; 
import {WelcomeController} from '../index'; 
import {Component} from '@angular/core'; 
import {ListController} from '../content/short_form/list/list.controller'; 

@Component({ 
    templateUrl: 'build/pages/login/login.controller.html' 
}) 
export class LoginController 
{ 
    public username : string; 
    public password : string; 

    constructor(public toast : ToastController, public navCtrl: NavController) 
    { 
    } 

    public checkAuth() 
    { 
    if (this.username !== 'test' && this.password !== 'test') { 
     this.toast.create({ 
     showCloseButton : true, 
     message : 'Username and password wrong', 
     position : 'bottom', 
     closeButtonText : 'Ok', 
     dismissOnPageChange: true 
     }).present(); 
    } else{ 
     this.navCtrl.setRoot(WelcomeController); 
    } 
    } 
} 

ようこそコントローラー

import {Component} from '@angular/core'; 
import {PopoverController} from 'ionic-angular/index'; 
import {DefaultPopover} from '../../components/popover/default/default.popover'; 

@Component({ 
    templateUrl : 'build/pages/welcome/welcome.controller.html' 
}) 
export class WelcomeController 
{ 

    constructor(public popoverCtrl : PopoverController) 
    { 
    } 

    public presentPopover(event) 
    { 
    this.popoverCtrl.create(DefaultPopover, {}, { 
     enableBackdropDismiss : true, 
     showBackdrop : true 
    }).present({ 
     ev : event 
    }); 
    } 
} 

リストコントローラ

import {Component} from '@angular/core'; 
import { 
    ShortFormEntity, 
    DetailsController 
} from "../index"; 
import {ImageService} from "../../../../components/index"; 
import {NavController, PopoverController} from 'ionic-angular'; 
import {ShortFormService} from '../services/short_form.service'; 
import {DefaultPopover} from '../../../../components/popover/default/default.popover'; 

@Component({ 
    templateUrl : 'build/pages/content/short_form/list/list.controller.html', 
    providers : [ShortFormService, ImageService] 
}) 
export class ListController 
{ 

    public list : [ShortFormEntity]; 
    private navCtrl : NavController; 

    constructor(shortFormService : ShortFormService, navCtrl : NavController, public popoverCtrl: PopoverController) 
    { 
    this.list = shortFormService.shortForms; 
    this.navCtrl = navCtrl 
    } 

    public createShortForm() 
    { 
    this.navCtrl.push(DetailsController); 
    } 

    public openShortForm(id) 
    { 
    this.navCtrl.push(DetailsController, { 
     id : id 
    }) 
    } 

    public presentPopover(event) 
    { 
    this.popoverCtrl.create(DefaultPopover, {}, { 
     enableBackdropDismiss : true, 
     showBackdrop : true 
    }).present({ 
     ev : event 
    }); 
    } 
} 

D下記のコントローラと私のイオン性情報の出力を含めましたefaultPopover

import {Component} from '@angular/core'; 
import {ViewController, NavController} from 'ionic-angular/index'; 
import {LoginController} from '../../../pages/login/login.controller'; 

@Component({ 
    templateUrl : 'build/components/popover/default/default.popover.html' 
}) 
export class DefaultPopover 
{ 
    constructor(public viewCtrl : ViewController, public navCtrl : NavController) 
    { 
    } 

    close() 
    { 
    this.viewCtrl.dismiss(); 
    } 

    logout() 
    { 
    this.navCtrl.setRoot(LoginController); 
    } 
} 

イオン性情報

Cordova CLI: 6.3.1 
Ionic Framework Version: 2.0.0-beta.11 
Ionic CLI Version: 2.0.0 
Ionic App Lib Version: 2.0.0-beta.20 
ios-deploy version: Not installed 
ios-sim version: Not installed 
OS: Mac OS X El Capitan 
Node Version: v4.5.0 
Xcode version: Xcode 7.2.1 Build version 7C1002 

編集:

輸入についての@ andreaspfrの質問を明確にします。私はangular2-seedパラダイムに従っており、各ディレクトリにはすべてのサブディレクトリとtsファイルをインポートするindex.tsファイルがあります。少しクリーナーをインポートする。ページ/ index.tsが

export * from './content/index'; 
export * from './login/index'; 
export * from './welcome/index'; 

答えて

0

のように見えます

はあなたが正しくWelcomePageをロードしていることを確認していますか? Login.tsでは、このimport {WelcomeController} from '../index';のようなウェルカムページを統合していますが、Welcome.tsにはあなたのページディレクトリbuild/pages/welcome/welcome.controller.htmlからテンプレートをロードすることがわかります。私はそれがこのようなものでなければならないと思います。../pages/welcome

関連する問題