2016-10-22 65 views
0

在我的Ionic 2應用程序中,有兩個頁面,但在ProfilePage被加載之後,它將推動LoginPage,然後刷新它並且頁面變爲空白。有誰知道爲什麼會發生這種情況?頁面導航問題ionic2和angular2

這是我的代碼

app.component.ts

import { Component } from '@angular/core'; 
import { Platform } from 'ionic-angular'; 
import { StatusBar } from 'ionic-native'; 

import { ProfilePage } from '../pages/profile/profile'; 
import { LoginPage } from '../pages/login/login'; 
import { AuthService } from '../services/auth/auth.service'; 

@Component({ 
    template: `<ion-nav [root]="rootPage"></ion-nav>` 
}) 
export class AuthApp { 
    rootPage: any = ProfilePage; 

    constructor(platform: Platform, private auth: AuthService) { 
    platform.ready().then(() => {  
     StatusBar.styleDefault(); 
     auth.startupTokenRefresh(); 
    }); 
    } 
} 

profile.ts

import {Component} from '@angular/core'; 
import {AuthService} from '../../services/auth/auth.service'; 
import { NavController } from 'ionic-angular'; 
import { LoginPage } from '../login/login'; 

@Component({ 
    templateUrl: 'profile.html', 
}) 
export class ProfilePage { 
    constructor(public auth: AuthService, public navCtrl: NavController) { 

    } 

    ngOnInit() { 
    console.log(this.auth.authenticated()) 
    if (!this.auth.authenticated()) { 
     this.navCtrl.setRoot(LoginPage); 
    } 
    } 
} 

login.ts

import { Component } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 
@Component({ 
    templateUrl: 'login.html', 
}) 
export class LoginPage { 
    authType: string = "login"; 
    error: string; 

    constructor(public navCtrl: NavController) {} 
} 

有任何建議什麼我做錯了?爲什麼LoginPage被推送時會刷新?

+0

控制檯中是否有任何東西? – sebaferreras

+0

沒有在控制檯中 –

回答

0

也許是因爲您將頁面設置爲root而不是推送頁面。而不是this.navCtrl.setRoot(LoginPage);你可以嘗試this.navCtrl.push(LoginPage);

0

是否打印兩次打印ngOnInit() console.log語句?

ngOnInit()可能被稱爲兩次:一次當你聲明頁面,第二次當你推動頁面。

你可以試着改變ngOnInit()ionViewDidLoad()(見this resource更多)

在任何情況下,這將有很大幫助,如果你能發佈app.module.ts文件的內容。爲什麼頁面類中沒有@IonicPage裝飾器?