2016-09-30 31 views
0

頁面A =登錄;Ionic2:無法從頁面A導航到頁面B,但我可以從頁面A到C,然後B

Page B =歡迎;

Page C = List;

Offending Component = DefaultPopover;

所以基本上我不能從頁面A導航到頁面B,除非我從歡迎頁面中刪除組件或從DefaultPopover註銷掉註銷功能。

相同的組件在頁面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中,我可以看到你將WelcomePage集成爲這樣的import {WelcomeController} from '../index';,但是在Welcome.ts中,你從你的頁面目錄build/pages/welcome/welcome.controller.html加載模板。我想它應該是這樣的../pages/welcome

相關問題