离子2模态参数

时间:2017-09-07 21:38:30

标签: angular ionic-framework binding ionic2 modal-dialog

我想在Ionic 2中显示一个模态并传递一些参数。这很好。 我的主要问题:参数是否绑定到navParams? 主要问题是,参数是否绑定到navParams?

var dataToPass = this.VLSMfields;
let modal = this.modalCtrl.create(VlsmMetaDataPage,dataToPass);
modal.onDidDismiss(data => {
  //this.VLSMfields is already edited <- Problem
  if(data != null){
      this.VLSMfields.Inputs = data;
  }
 });
modal.present();

模态:

    export class VlsmMetaDataPage {

  constructor(public viewCtrl: ViewController,public alertCtrl: AlertController,  public navParams: NavParams) {
  }

  Hosts = {
    avalible : 0,
    used : 0,
    left:0,
  }
  inputs = [];
  ionViewDidLoad() {
    console.log('ionViewDidLoad VlsmMetaDataPage');
     this.Hosts.avalible = this.navParams.data.Hosts;
     this.Hosts.left = this.navParams.data.Hosts;
     this.inputs = this.navParams.data.Inputs;
  }
  closeModal(){
    this.viewCtrl.dismiss(null);
  }
  submitModal(){
//Gets edited before in HTML
      this.viewCtrl.dismiss(this.inputs);
  }
}

怎么了? 我只想将“this.VLSMfields.Inputs”设置为数据,如果dismiss不为null。

编辑: 我希望这段代码能更好地解释我的问题:

export class ProfilePage {
  private test;
  private test2;
  constructor(public navCtrl: NavController,public viewCtrl: ViewController, private navParams: NavParams) {
    this.test = navParams.get("data");
    this.test2 = navParams.get("data");
  }

  ionViewDidLoad() {
    console.log('ionViewDidLoad ProfilePage');
  }
  private doSmth(){
    this.test.Edit = "test123";
    console.log(this.test); // {edit:"test123"}
    console.log(this.test2);// {edit:"test123"}
  }
  private cancel(){
    this.navCtrl.pop();
  }
  private submit(){
    this.navCtrl.pop();
  }

}

为什么“test2”与“test”的值相同?

2 个答案:

答案 0 :(得分:0)

您应该使用如下对象将数据传递给模态:

let modal = this.modalCtrl.create(VlsmMetaDataPage, { data: dataToPass });

然后你可以在你的模态中得到它:

public params;
constructor(navParams: NavParams) {
  this.params = navParams.get('data');
}

您正在通过data属性直接访问NavParams实例,并且因为NavParams是一个注入式,如果您不使用get()方法,则直接修改数据。您可以找到NavParams文档here

答案 1 :(得分:0)

我找到了答案,......

只是,使用JSON.stringify(this.object)删除奇怪的绑定。 要从字符串中获取对象,请使用JSON.parse(this.objectJson);

我希望这可以帮助其他人解决同样的问题。