ड्रॉपडाउन मेनू से मानों को ऑब्जेक्ट की सरणी में कैसे मर्ज करें? प्री-पॉप्युलेट वैल्यू वाले दो ड्रॉपडाउन मेनू (व्यक्ति और देश) हैं यहां छवि विवरण दर्ज करें

इसलिए व्यक्ति को देश सौंपते समय, मैं वस्तुओं की सरणी में डेटा प्राप्त करने का प्रयास कर रहा हूं जैसे: [{person: 'John', country: 'USA'}, {person: 'Pablo', country: 'Mexico'}] उपयोगकर्ता चयन के आधार पर।

मैं FormArray के साथ प्रयास कर रहा हूं लेकिन मैं कुछ गलत कर रहा हूं

Stackblitz

1
corry 27 सितंबर 2018, 14:38

1 उत्तर

सबसे बढ़िया उत्तर

आपको व्यक्तियों के डेटा की संख्या के आधार पर फॉर्मएरे बेस में एक फॉर्मग्रुप जोड़ना होगा, इसलिए यदि आपके पास दो व्यक्ति हैं तो आपको दो फॉर्म ग्रुप बनाने होंगे

इस तरह

this.selectForm = this.formBuilder.group({
  persons: this.formBuilder.array([
    this.formBuilder.group({
      'person': '',
      'country': ''
    }),
    this.formBuilder.group({
      'person': '',
      'country': ''
    })
  ])
});

या व्यक्तियों पर एक प्रपत्र समूह आधार को बड़ा करें

this.selectForm = this.formBuilder.group({
  persons: this.formBuilder.array(this.getFormGroupByN(this.personsData.length)
  )
});


getFormGroupByN(n: number) {
  let result = []
  for (let i = 0; i < n; i++) {
    result.push(this.formBuilder.group({
      'person': '',
      'country': ''
    })
    );
  } // for end 

  return result;
}

मैंने personsData को कॉल करने वाले व्यक्तियों के डेटा को रखने के लिए एक वैरिएबल बनाया है ताकि Ican लूप थ्रो और ऑप्शन एलिमेंट बना सके

this.personsData = this.parts.map(part => part.persons).reduce((r, part, []) => r.concat(part));

परिणाम अब इस तरह दिखेगा

[{"person":"John","country":"USA"},{"person":"Pablo","country":"Mexico"}]

स्टैकब्लिट्ज डेमो

0
malbarmavi 1 अक्टूबर 2018, 14:18