ioni c 4/5 избегать множественных предупреждений / всплывающих / модальных подсказок - PullRequest
1 голос
/ 06 августа 2020

Знаете ли вы, как избежать множественных предупреждений / popover / modal?

Я не могу найти ни одного примера, как это сделать в ionic4 / 5.

private async alertCtrlDispatchNavigateAfterLogout(msg:string):Promise<HTMLIonAlertElement>{
  let alert = await this.alertCtrl.create({
    cssClass: "ge-session-timeout-alert",
    backdropDismiss: false,
    subHeader: msg,
    buttons: [
      {
        text: 'OK',
        role: 'cancel',
        handler: () => {
          this.store.dispatch(new RouterActions.NavigateAfterLogout(true));
        }
      }
    ],
  });
  await alert.present();
  return alert;
}

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

вам необходимо сначала проверить появление любого предупреждения / всплывающего окна / модального окна, затем закрыть

const checkPropmt = await this.alertCtrl.getTop();
if(checkPropmt){
  this.alertCtrl.dismiss();
}

вышеуказанный код отклонить предупреждение или модель.

0 голосов
/ 06 августа 2020

Вы можете обратиться к приведенному ниже образцу кода, написанному на ioni c 3. Та же идея будет работать в Ioni c 4/5, где флаг alertPresent предотвращает представление более одного экземпляра

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();
    }
  }
}
...