Я получаю очень сложный объект json из бэкэнда, который содержит массивы в качестве ключевых значений, например:
[
id: 1
persons: [
{
name: 'Name',
property: [ ..... ]
}
.........
]
]
Мне нужно заполнить этот объект в моей Реактивной форме. Поэтому в моей функции ngOnInit я инициализирую форму и получаю данные массива из сервиса. Затем я передаю эти данные в функцию convertToFormGroup для создания этого вложенного FormArrays из простого объекта. Проблема с этой функцией в том, что она работает только на один уровень. Я боюсь, что API может измениться в будущем, и мне понадобится другой FormArray внутри FormArray? Я думаю, что это совершенно неправильный подход? И это должно быть проще для преобразования объекта с вложенными массивами в FormGroup с вложенными FormArrays. У нас есть какая-то существующая функция для этого? Я новичок в Angular, поэтому не стесняйтесь критиковать меня.
ngOnInit() {
this.form = this.fb.group({
data: this.fb.array([]),
})
this.service.getData().subscribe(data => {
const convertedData = convertToFormGroup(data);
(this.form.get('data') as FormArray).push(convertedData);
});
}
private convertToFormGroup(object) {
const newObj = {};
Object.keys(object).map(key => {
if (Array.isArray(object[key])) {
newObj[key] = this.fb.array([]);
for(const value of object[key]) {
newObj[key].push(this.fb.group(value));
}
} else {
newObj[key] = object[key];
}
});
return this.fb.group(newObj);
}