Search code examples
ionic-frameworkionic2

Prevent multiple Ionic Alerts from stacking up


How can I detect if ionic 2 alert ui component instance is already open in order not to present another alert ?


Solution

  • I ended up writing a wrapping provider for Ionic's Alert controller like so :

    import { Injectable } from '@angular/core';
    import { AlertController } from 'ionic-angular';
    
    @Injectable()
    export class Alert {
      public alertPresented: any;
      constructor(public alertCtrl: AlertController) {
        this.alertPresented = false
      }
    
      present(title, subTitle) {
        let vm = this
        if(!vm.alertPresented) {
          vm.alertPresented = true
          vm.alertCtrl.create({
            title: title,
            subTitle: subTitle,
            buttons: [{
              text: 'OK',
              handler: () => {
                vm.alertPresented = false
              }
            }],
          }).present();
        }
      }
    }
    

    where alertPresented flag prevents more than one instance from being presented