2016-12-23 15 views
5

साथ मैं के साथ एक घटक है:, ngFor अंदर ngModel में एक गतिशील प्रॉपर्टी सेट कोणीय 2

  • "selectedData": किसी भी
  • "फील्ड": क्षेत्रों की एक सरणी। एक फ़ील्ड इन गुणों के साथ एक वस्तु है: लेबल और प्रकार। ये फील्ड वस्तु "selectedData"

उदाहरण वर्णन:

selectedData = { Label:"test", IsUsed:false} 

fields = [{name:'label', type:'string'},{name:'IsUsed, type:'boolean'} 

मैं 'selectedData'

यहाँ अंदर डेटा संपादित करने के लिए एक फ़ॉर्म जनरेट करें कोशिश कर रहा हूँ है का हिस्सा मेरी देखें:

<div class="ui-grid-row" *ngFor="let myField of fields" > 
      <div class="ui-grid-col-4"><label for="{{myField.name}}">{{myField.name}}</label></div> 
      <div class="ui-grid-col-8"><input pInputText id="{{myField.name}}" [(ngModel)]="this['selectedData.' + myField.name]" /></div> 
     </div> 

समस्या इस पंक्ति के साथ है

[(ngModel)]="this['selectedData.' + myField.name]" 

यह वांछित काम नहीं करता है जैसा मैं चाहता था। screen capture of my problem

आप देख सकते हैं, Angular2 नाम "selectedData.Label" के साथ एक वस्तु बनाता है के बजाय selectedData मौजूदा ऑब्जेक्ट का उपयोग कर: यहाँ जब मैं संपादित मेरी घटक के गूगल क्रोम घड़ी है।

क्या कोई समाधान है? या मुझे इसे अलग करना चाहिए?

Thx

+0

क्यों एक डाउनवोट? –

+0

मुझे यह समझने में वास्तव में कठिन समय है। तो आप मौजूदा चयनित डेटा के लेबल को संपादित करने के लिए अपने उदाहरण में कोशिश कर रहे हैं। फिर यह होना चाहिए '[(ngModel)] = "चयनित डेटा। लेबल" अन्यथा यह लेबल को अपडेट नहीं करेगा। – Alex

+0

आपको किस उद्देश्य के लिए फ़ील्ड सरणी की आवश्यकता है? – Alex

उत्तर

6

जवाब आसान था:

[(ngModel)]="selectedData[myField.name]" 

field.Name 'लेबल' का एक मान है, तो पिछले कोड बराबर है के रूप में:

[(ngModel)]="selectedData.label" 

मैंने नहीं किया पता है कि '[]' इस तरह इस्तेमाल किया जा सकता है।

संबंधित मुद्दे