在我的应用程序中,我有以下警报:
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 = [];
}