在我的应用程序,我有这样的警告:
let confirm = this.alertCtrl.create({
title: 'Blabla',
message: 'blablabla',
buttons: [button1, button2, button3],
enableBackdropDismiss: false
});
confirm.present();
此外,当应用程序被恢复时,应用程序应该重定向到登录页面。在做这项工作没有问题。
问题来了,当我打开弹出窗口并恢复该应用程序。该应用程序正确地重定向,但弹出保持打开。
是否有解决方案,以编程方式关闭所有打开的弹出窗口?恢复功能是从app.component称为:
this.platform.resume.subscribe(() => {});
出于这个原因,我不能打电话确认变量,并关闭这个弹出。
您可以订阅来自不同地方的同一事件。所以,你可以从那里您this.platform.resume.subscribe(() => {});
变量访问组件调用confirm
。
因为我的代表处不高,我不能添加在Sabari的回答评论够了,但是我可以证实,他的方法的工作原理。我目前正在执行我的组件的方法,让应用程式当用户按设备的后退按钮回到它的步骤,但并AlertController,AlertSheetController的情况下,类似的是有问题的。
我相比,他的解决方案所做的唯一的变化是实现了一个名为logoutStarted布尔值,更改为true,每当AlertController提出警告。
if (this.alerts.length > 0 || this.logoutStarted) {
this.alerts.forEach(i => {
i.dismiss();
this.alerts = [];
this.logoutStarted = false;
});
}
这样做,我能够从该方法this.platform.registerBackButtonAction关闭警报(()=> {}
通过调用presentAlert()方法打开从常用页面(供应商)的警报。
而在认购的onResume,调用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 = [];
}