我正在开发具有以下页面的Ionic v3应用程序: LoginPage, MenuPage(SideMenu)。
我从菜单打开以下页面: 仪表板页面 个人资料页
我使用this.navCtrl.setRoot(MenuPage)
从LoginPage导航到MenuPage
现在,当我尝试处理 menu.ts 中的后退按钮时。 if
的{{1}}块工作正常,但是当我按下 ProfilePage 中的后退按钮时,它显示错误。我尝试了在不同论坛中找到的许多解决方案,但没有一个对我有帮助。
registerBackButton()
错误日志
rootPage = DashboardPage;
...
registerBackButton(){
this.platform.registerBackButtonAction(() => {
let view = this.nav.getActive();
if (view.component.name == "DashboardPage"){ //if-block
//Double check to exit app
if (new Date().getTime() - this.lastTimeBackPress < this.timePeriodToExit) {
this.platform.exitApp(); //Exit from app
} else {
let toast = this.toastCtrl.create({
message: 'Press back again to exit App?',
duration: 3000,
position: 'bottom'
});
toast.present();
this.lastTimeBackPress = new Date().getTime();
}
}else{ //else-block
this.nav.pop(); //here it shows error
}
});
答案 0 :(得分:-1)
使用setRoot()
方法时,所有页面将从导航堆栈中删除。因此,您不能从空的导航堆栈中调用pop()
。要调用pop()
,导航堆栈中至少应有一页。根据您的情况,您在空的导航堆栈上调用pop()
。您的要求在这里不清楚,但是如果要在MenuPage中调用pop()
,请使用this.navCtrl.push(MenuPage)
而不是this.navCtrl.setRoot(MenuPage)
。