页面导航问题ionic2和angular2

时间:2016-10-22 04:06:44

标签: angular ionic2

在我的Ionic 2应用程序中,有两个页面,但在ProfilePage加载后,它会推送LoginPage,然后刷新它,页面变为空白。有谁知道为什么会这样?

这是我的代码

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在被推送时会被刷新?

2 个答案:

答案 0 :(得分:0)

可能是因为您将页面设置为root而不是推送它。您可以尝试this.navCtrl.setRoot(LoginPage);

而不是this.navCtrl.push(LoginPage);

答案 1 :(得分:0)

ngOnInit()中的console.log语句是否会被打印两次?

ngOnInit()可能会被称为两次:一次声明页面,第二次推送页面。

您可以尝试将ngOnInit()更改为ionViewDidLoad()(有关详情,请参阅this resource

在任何情况下,如果您可以发布app.module.ts文件的内容,将会有很大帮助。为什么页面类中没有@IonicPage装饰器?