2017-04-21 101 views
0

這是我的json響應。如何能在角2在角度2中綁定ngModel中的json值

[ 
    { 
    "id": 18, 
    "gname": "learning ramayanam", 
    "goalCategory": "Education", 
    "goalSubCategory": "short-term", 
    "goalDesc": "good", 
    "rowStatusCode": "D", 
    "createID": "1", 
    "createTS": null, 
    "updateID": "Ram", 
    "updateTS": null, 
    "rewards": { 
    "rewardID": 1, 
    "rewardName": "Laptop" 
    } 
] 

[(ngModel)]的rewards.rewardName值綁定這是我的代碼哥們我怎麼能值綁定在ngModel

ngOnInit() { 
    this.route.params 
     .forEach(params => { 
      this.isEdition = !!params['id']; 
      if (this.isEdition) { 
       // this.getDocument(params['id']); 
    this.itemPromise = this.http.get('http://localhost:8080/dy/get-goal?id=' 
    + 
    params['id']) 
    .map(res => res.json()).toPromise(); 

    this.itemPromise.then((item: any) => { 
    console.log(item); 
    var arr = JSON.parse(item); 
    this.item = arr[0]; 
    return item; 
    }); 

回答

0

我建議你看一看的official http tutorial。我建議你使用promise或observables。似乎你想使用承諾,所以我會爲你設置這個例子。也請考慮使用服務(如在本教程),該建議,但在這裏,我將使用現有的代碼:

// remove "this.itemPromise = " and just have the code below 
this.http.get('http://localhost:8080/dy/get-goal?id=' + params['id']) 
    .toPromise() 
    .then(res => res.json()) 
    .then(data => { 
     this.item = data[0]; 
    }) 

這樣做時,會出現一個undefined問題,因爲這是異步。檢查這一個:Cannot read property "totalPrice" of undefined 雙向結合,即[(ngModel)]不支持安全導航操作,所以你會想這種分裂單向結合和ngModelChange

<input [ngModel]="item?.rewards?.rewardName" 
    (ngModelChange)="item?.rewards?.rewardName ? item.rewards.rewardName=$event : null" > 

道具爲此:https://stackoverflow.com/a/36016472/6294072

下面是一個使用DEMO服務,我建議你做;)

+0

非常感謝我的工作 –

+0

沒問題,很高興我能幫幫我 :) – Alex

0

解析您的JSON的對象。

var obj = JSON.parse(json); 

然後將其綁定到你的元素

[(ngModel)]="obj.rewards.rewardName" 
+0

我得到這個錯誤哥們我能做些什麼 錯誤錯誤:未捕獲的(在承諾未來e):TypeError:無法讀取undefined屬性'rewardName' TypeError:無法在Object.View_RewardseditComponent_0.co [as updateDirectives](ng:///AppModule/RewardseditComponent.ngfactory.js:1152)讀取未定義的 屬性'rewardName' :37) –

+0

錯過了這個obj將會是一個數組。 嘗試: 'var arr = JSON.parse(json); var obj = arr [0];' 獲取第一個元素。 – argoo

+0

我得到這個錯誤的傢伙錯誤錯誤:未捕獲的(在承諾):語法錯誤:意外的標記?在JSON在位置1 語法錯誤:意外的標記?在JSON在位置1 在JSON.parse() –