我想拦截后退按钮事件。 一旦调用侦听器,就会触发反向信号。
这是我试过的:
flatMap
我不想丢失“this.inputValue”值。 但在大多数情况下它已经消失了。
答案 0 :(得分:1)
我想在离开页面前显示提醒。
您可以使用NavGuards
:
在某些情况下,开发人员应该能够控制离开和的视图 进入。为实现此目的,
NavController
拥有ionViewCanEnter
和ionViewCanLeave
方法。与Angular路线卫兵类似,但是 与NavController
更加完整。
// ...
ionViewCanLeave() {
if(this.inputValue) {
// Show the alert
this.presentConfirm();
}
// Will leave if the input is null
return this.inputValue === null;
}
presentConfirm() {
let alert = this.alertCtrl.create({
title: 'Exit',
message: 'Do you want to exit?',
buttons: [
{
text: 'Cancel',
role: 'cancel'
},
{
text: 'Exit',
handler: () => {
// Allow the user to exit this page
this.inputValue = null;
// Go back to the previous page
setTimeout(() => { this.navCtrl.pop(); }, 500);
}
}
]
});
alert.present();
}
答案 1 :(得分:0)
这就是我自己做的:
constructor(public plt: Platform) {
//Catch BackBTN Event
plt.ready().then( ()=> {
plt.registerBackButtonAction( ()=> {
this.showConfirm();
})
});
}
showConfirm() {
let confirm = this.alertCtrl.create({
title: this.confirm,
message: this.confirm_msg,
buttons: [
{
text: this.disagree,
handler: () => {
console.log("Saved changes");
this.dismiss();
}
},
{
text: this.agree,
handler: () => {
console.log("Discard changes");
this.viewCtrl.dismiss();
}
}
]
});
confirm.present();
}
}
有了这个,我可以设置我自己的自定义BackBTN方法。