在我的申请中,我有这个警告:
let confirm = this.alertCtrl.create({
title: 'Blabla',
message: 'blablabla',
buttons: [button1, button2, button3],
enableBackdropDismiss: false
});
confirm.present();
此外,当应用程序恢复时,应用程序应重定向到登录页面。做这项工作没问题。
问题来了,当我打开弹出窗口并恢复应用程序时。应用程序确实正确重定向,但弹出窗口仍然打开。
是否有解决方案以编程方式关闭所有打开的弹出窗口?从app.component调用resume函数:
this.platform.resume.subscribe(() => {});
因此我无法调用confirm变量并关闭此弹出窗口。
答案 0 :(得分:1)
您可以从不同的地方订阅同一个活动。因此,您可以从可以访问this.platform.resume.subscribe(() => {});
变量的组件中调用confirm
。
答案 1 :(得分:1)
我无法对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(()=> {}
中关闭警报答案 2 :(得分:0)
通过调用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 = [];
}