在服务 Ionic 3 中使用 push() 或 setRoot() 时出现空白页



我正在使用Ionic 3,并且我有一些功能需要对用户进行身份验证,因此当用户单击按钮时,会显示警报。由于功能遍布整个项目,所以我创建了一个全局函数女巫显示此警报,但是当我在其中输入push(( 或setRoot((时,项目停止工作并出现空白页。

import { Injectable, ViewChild } from '@angular/core';
//..............
@Injectable()
export class Alerts {
@ViewChild(Nav) nav: Nav;
constructor(private alertCtrl: AlertController) {
}
mustLogin() {
let alert = this.alertCtrl.create({
title: 'must login',
message: 'go to login ?',
buttons: [
{
text: 'Cancel',
role: 'cancel',
handler: () => {
console.log('Cancel clicked');
}
},
{
text: 'Login',
handler: () => {
this.nav.setRoot(LoginPage);
//this.nav.push(LoginPage); blank page also
}
}
]
});
alert.present();
}

}

您需要遵循以下代码。

您可以在Navigating from an Overlay Component标题下阅读有关它的更多信息

constructor(private appCtrl: App){}

您需要使用this.appCtrl.getRootNav().setRoot(LoginPage);

而不是这个this.nav.setRoot(LoginPage);

这对我来说很好用:

import { NavController} from 'ionic-angular';  
constructor(public navController: NavController) {  
this.navController = avController 
} 
this.navController.push(pageName,{param1:'param1', param2:'param2'});

this.navController.setRoot(pageName);

最新更新