在我的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
在被推送时会被刷新?
答案 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
装饰器?