我有这个奇怪的问题。用户登录时,用户被转发到仪表板。但在此之前,我从导航堆栈中删除登录页面,以便当用户按下硬件返回按钮时,它们不会被带回登录页面(因为它们已经登录)。Ionic 2:从导航堆栈中删除登录页面,导致nav.push在仪表板页面停止工作
以下是登录页面的我的登录方法
loginUser(){
this.loading=this.loadingctrl.create({
content:"Logging in, please wait..."
});
this.loading.present();
this.ajaxRequest = this.webservice.loginUser(params).subscribe(data => {
this.loading.dismiss();
if(data.status =="ok"){
this.navctrl.push(DashboardPage).then(()=>{
const index = this.viewCtrl.index;
this.navctrl.remove(index);
//Above two lines finds index of current page and removes current page, i.e. login page from navigation stack
});
}else{
//show error alert
}
}, err =>{
this.loading.dismiss();
});
}
此代码工作得很好,但是却遇到了一个奇怪的问题
问题
在仪表板的任何按钮或刷卡菜单没有按没有工作。每个链接/按钮调用一些导航到其他页面的方法。示例方法 -
gotoProductsPage(){
console.log("method gotoProductsPage is called");
this.navCtrl.push(ProductsPage);
}
我可以看到方法被调用,因为我可以看到日志被打印在控制台中。唯一的是this.navCtrl.push(ProductsPage);
似乎不工作。
我在登录页面的登录方法中做了进一步的测试并注释了行const index = this.viewCtrl.index;
和this.navctrl.remove(index);
。 现在,所有的按钮的作品。但硬件后退按钮将用户带回登录页面。 任何人都可以启发我为什么我的应用程序有这种奇怪的行为? 谢谢
为什么不''this.navCtrl.setRoot(DashboardPage)'? – Duannx