离子关闭模态并返回上一页发送数据

时间:2018-01-17 14:49:17

标签: javascript angular typescript ionic2 ionic3

我想知道是否有办法将数据从模态传递到上一页而不使用nav controller。如果我使用它,事实上,我在堆栈上推另一页,我不想要这个,我只想回到现有的页面。问题是,如果我这样做:

this.viewCtrl.dismiss();
this.navCtrl.pop();
当我要关闭它时,在模态内部,它给了我一个错误,说没有页面可以弹出。
如果我不需要传递数据,我只需使用dismiss()方法进行模态,但我需要将一些数据返回到上一页,我不知道如何做到这一点。可能吗?我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

就像您可以看到 here 一样,您可以使用dismiss方法发送一些数据并将其显示在上一页(您不要' t 需要使用this.navCtrl.pop();):

 // Page A
 // ----------

 private dataFromModal: any;

 presentModal() {
   let modal = this.modalCtrl.create(ModalPage);

   modal.onWillDismiss((data) => {
     // This is going to be executed when the modal is closed, so
     // you can get the data here
     this.dataFromModal = data;
   });

   modal.present();
 }


// Page B
// ----------

let data = { 'foo': 'bar' };
this.viewCtrl.dismiss(data);

答案 1 :(得分:1)

您可以将数据存储在存储中,然后解除提取信息,如下所示:

import { Storage } from '@ionic/storage';

constructor(private navCtrl: NavController, private navParams: NavParams,
             private modalCtrl: ModalController,
              private storage: Storage) {}


openModal() {
    let modal = this.modalCtrl.create(ModalPage);
    modal.present();
    modal.onDidDismiss(data => {
        this.getInfo();
    });
}

getInfo() {
    this.storage.get("some_data").then(res => {
      if(res != null){
        this.data = res;
      }
    });
}

modal.ts

setInfo() {
    this.storage.set('some_data', data);
    this.dismiss();
}