Angular Ionic 4-关闭或关闭平台硬件上的模式后退按钮android

Angular Ionic 4-关闭或关闭平台硬件上的模式后退按钮android,angular,cordova,ionic4,Angular,Cordova,Ionic4,在ionic 4中,按下硬件上的“后退”按钮,我想关闭或关闭将出现的任何模式。 我使用了下面给出的代码,这里的条件“if(modal){modal.disease();}”总是得到满足,即使前面的modal被解除 constructor(private platform: Platform, private modalCtrl: ModalController) { this.initializeapp(); } initializeapp() { this.platform.registerB

在ionic 4中,按下硬件上的“后退”按钮,我想关闭或关闭将出现的任何模式。 我使用了下面给出的代码,这里的条件“if(modal){modal.disease();}”总是得到满足,即使前面的modal被解除

constructor(private platform: Platform, private modalCtrl: ModalController) {
this.initializeapp();
}
initializeapp() {
this.platform.registerBackButtonAction(1, async () => {
    const modal = await this.modalCtrl.getTop();
    if (modal) {
        modal.dismiss();
    }
});
}

对Ionic注册了一个自定义事件
Ionic BackButton
,用于处理硬件后退按钮按下:

在Ionic中管理所有覆盖的覆盖代码通过取消最上面的覆盖来处理此
ionBackButton
事件:

那么,您的代码试图实现什么呢

似乎只有当
backdropdismise
也设置为true时,它才会执行此操作:

if (lastOverlay && lastOverlay.backdropDismiss) {

我假设这意味着它被归类为可选/低级覆盖,而不是模拟模式。

在第一个硬件后退按钮上,我必须检查是否有任何模式打开,如果有任何模式打开,则关闭该模式,如果没有模式打开,则导航一页。这是离子4的默认行为,不是吗?如果这不是您正在经历的,那么您的覆盖没有设置为
backdropdismise
。覆盖系统覆盖爱奥尼亚所有类型的覆盖层。他们似乎使用了
backdropdisease
来辨别这是否是一个重要的覆盖,而不应该仅仅用back按钮来取消。如果您正在显示不重要的覆盖,请确保设置了
backdropdisease
,以便硬件后退按钮可以关闭它。有一个解决方案:我已将优先级设置为0,即this.platform.registerBackButtonAction(0,async()=>{const modal=wait this.modalCtrl.getTop();If(modal){modal.disease();});