Как передать данные при нажатии на фон модала для получения в функции обратного вызова onDidDismiss? Ionic 3 Angular 6

#angular #ionic-framework #ionic3 #angular6

#angular #ionic-framework #ionic3 #angular6

Вопрос:

Как я могу передать данные в onDidDismiss модала, нажав на фон модала?

Ответ №1:

После некоторых исследований я не могу найти ответ на вопрос заголовка. Итак, я опубликую здесь, как я решил эту проблему и получил данные модала в функции onDidDismiss на странице модального вызова:

На странице вызывающего абонента:

 
@IonicPage()
@Component({...})
export class ExamplePage {

  constructor(...){...}

  private _showModal() {

    let modal = this._modalCtrl.create(
      'ModalPage',
      {...},
      {
        showBackdrop: true,
        enableBackdropDismiss: false,
      });
    modal.present();

    modal.onDidDismiss((res)=>{
      console.log("_showModal.modal.onDidDismiss: ", res);
    });

  }

}

  

И на странице модала:

 

@IonicPage()
@Component({...})
export class ModalPage{

  constructor(...){...}

  ionViewDidLoad() {
    let _modal = this._elRef.nativeElement;

    while (_modal.tagName != "ION-MODAL") {
      _modal = _modal.parentNode;
    }

    let _unlistenBackdrop = this._renderer.listen(_modal.querySelector('ion-backdrop'), "click", e=>{
      this._dismiss();
    });

  }

  private _dismiss(){
    let obj = {};

    // ... feed the object with whatever you need;

    obj = {test: true};

    this._viewCtrl.dismiss(obj);
  }

}

  

Надеюсь помочь какому-нибудь программисту, который пришел сюда с такими же сомнениями. 🙂

Если кто-то знает лучший способ достичь того же результата, пожалуйста, опубликуйте его в ответе ниже. ;D

Спасибо!