如何在平台恢复中关闭所有弹出窗口



在我的应用程序中,我有以下警报:

let confirm = this.alertCtrl.create({
                    title: 'Blabla',
                    message: 'blablabla',
                    buttons: [button1, button2, button3],
                    enableBackdropDismiss: false
                });
                confirm.present();

此外,当应用程序恢复时,应用程序应重定向到登录页面。使它工作没有问题。

当我打开弹出窗口并恢复应用程序时,问题来了。应用程序确实正确重定向,但弹出窗口仍处于打开状态。

有没有解决方案可以编程方式关闭所有打开的弹出窗口?恢复函数是从 app.component 调用的:

this.platform.resume.subscribe(() => {});

因此,我无法调用确认变量并关闭此弹出窗口。

Sabari 的方法有效!我目前正在我的组件中实现方法,以允许应用程序在用户按下设备的后退按钮时返回其步骤,但 AlertController、AlertSheetController 和类似实例存在问题。

与他的解决方案相比,我所做的唯一更改是实现一个名为logoutStarted的布尔值,每当AlertController发出警报时,该布尔值都会更改为true。

if (this.alerts.length > 0 || this.logoutStarted) { 
        this.alerts.forEach(i => {
            i.dismiss();
            this.alerts = [];
            this.logoutStarted = false;
        });
      }

这样做,我能够从该方法中关闭警报:

this.platform.registerBackButtonAction(() =>{}

您可以从不同的地方订阅同一事件。因此,您可以从可以访问confirm变量的组件调用this.platform.resume.subscribe(() => {});

通过调用 presentAlert(( 方法从公共页面(提供程序(打开警报。

在恢复订阅中,调用 dismissAlert(( 方法以关闭所有打开的警报。

alerts: Alert[] = [];
 presentAlert() {
        let confirm = this.alertCtrl.create({
            title: 'Blabla',
            message: 'blablabla',
            buttons: [button1, button2, button3],
            enableBackdropDismiss: false
        });
        this.alerts.push(confirm);
        confirm.present();
    }
    dismissAlert() {
        console.log('Dismissed alert');
        if (this.alerts.length) {
            this.alerts.forEach(e => {
                e.dismiss();
            });
        }
        this.alerts = [];
    }

相关内容

  • 没有找到相关文章

最新更新