Как объединить значения из выпадающих меню в массив объектов?
Есть два раскрывающихся меню (люди и страны) с предварительно заполненными значениями.

поэтому при назначении страны человеку я пытаюсь получить данные в виде массива таких объектов, как: [{person: 'John', country: 'USA'}, {person: 'Pablo', country: 'Mexico'}], на основе выбора пользователя.
Я пытаюсь использовать FormArray, но что-то не так
Правильно, спасибо. Есть ли способ переместить все объекты из формы в массив? Подает только последний объект stackblitz.com/edit/…





Вам нужно добавить formGroup в formArray на основе данных о количестве людей, поэтому, если у вас есть два человека, вам нужно создать две formGroup
нравится
this.selectForm = this.formBuilder.group({
persons: this.formBuilder.array([
this.formBuilder.group({
'person': '',
'country': ''
}),
this.formBuilder.group({
'person': '',
'country': ''
})
])
});
или создайте базу formGroup по лицам
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, поэтому я могу выполнить цикл и создать элемент option
this.personsData = this.parts.map(part => part.persons).reduce((r, part, []) => r.concat(part));
результат теперь выглядит так
[{"person":"John","country":"USA"},{"person":"Pablo","country":"Mexico"}]
Для * ngFor. проверьте stackoverflow.com/questions/52530584/….