我从后端获得了非常复杂的 json 对象,其中包含数组作为键值,如下所示:
[
id: 1
persons: [
{
name: 'Name',
property: [ ..... ]
}
.........
]
]
我需要将此对象填充到我的响应式表单中。所以在我的 ngOnInit 函数中,我初始化表单并从服务中获取数组数据。然后我将此数据传递给“convertToFormGroup”函数,以从简单对象创建这个嵌套的 FormArrays。这个函数的问题是它只能工作一层。我担心 api 将来会发生变化,我需要在 FormArray 中使用另一个 FormArray?我认为这是完全错误的方法?这应该更简单地将具有嵌套数组的对象转换为具有嵌套 FormArrays 的 FormGroup。我们有一些现有的功能吗?我是 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);
}