我正在使用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);