2017-09-07 3 views
0

イオン2でモーダルを表示し、いくつかのパラメータを渡したいと思います。それはうまく動作します。 私の主な問題:パラメータはnavParamsにバインドされていますか? 主な問題は、パラメータがnavParamsにバインドされていることです。イオン2モーダルパラメータ

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

を? 私は、dismissがnullでない場合、 "this.VLSMfields.Inputs"をデータに設定したいだけです。

編集: 私はこのコードは、より良い私の問題を説明願っています:

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」「テスト」と同じ値を持っていますか?

答えて

0

私は奇妙な結合を削除するJSON.stringify(this.object)を使用し、

だけ...、答えを見つけました。 文字列からオブジェクトを取得するにはJSON.parse(this.objectJson);

これは他の人が同じ問題を起こすのを助けてくれることを願っています。

0

あなたはこのようなオブジェクトを使用してモーダルにデータを渡す必要があります。

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

そして、あなたはこのようなあなたのモーダルでそれを得ることができます。

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

あなたはNavParamsインスタンスにアクセスしていますdataプロパティを介して直接入力し、NavParamsは注射器であるため、get()メソッドを使用しない場合は、データを直接変更しているためです。 NavParamsのドキュメントhereが見つかります。

+0

ご返信ありがとうございます。これは私にとってはうまくいかなかった。同じ振る舞いで、dataToPassは "this.params"の値に変わります。 –

+0

これはコンストラクタで割り当てられているため、はいですか? – David

+0

編集で説明した問題を私に説明するのに役立つかもしれませんか?前もって感謝します! –