2017-09-07 57 views
0

我想在離子2中顯示模態並傳遞一些參數。這工作正常。 我的主要問題:參數綁定到navParams? 主要問題是,參數綁定到navParams?Ionic 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); 
    } 
} 

有什麼不對? 我只是想設置「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(); 
    } 

} 

爲什麼有「測試2」相同的值「測試」?

回答

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

也許它可以幫助我解釋我在編輯中描述的問題?提前致謝! –