离子3块后退按钮事件

时间:2017-07-06 11:01:42

标签: typescript ionic-framework ionic3

我想拦截后退按钮事件。 一旦调用侦听器,就会触发反向信号。

这是我试过的:

flatMap

我不想丢失“this.inputValue”值。 但在大多数情况下它已经消失了。

2 个答案:

答案 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方法。