后端以角度2

问题描述

我想用对象数组生成JSON驱动的表单,目前stackbiz正在处理单个对象json(person.js),我正在尝试使用下面的JSON数组修改person.ts

对于json

[{
  name: {
    label: 'Name',value: 'Juri',type: 'text',validation: {
      required: true
    }
  },age: {
    label: 'Age',value: 32,type: 'text'
  },gender: {
    label: 'Gender',value: 'M',type: 'radio',options: [
      { label: "Male",value: 'M'},{ label: "Female",value: 'F'}
    ]
  },city: {
    label: 'City',value: '39010',type: 'select',options: [
      { label: "(choose one)",value: ''},{ label: "Bolzano",value: '39100'},{ label: "Meltina",value: '39010'},{ label: "Appiano",value: '39057'}
    ],validation: {
      required: true
    }
  }
},{
  name: {
    label: 'Name',value: 'Juri1',value: 'F'}
    ]
  }
}]

因此模板输出应该是这样的(包括两个部分)

enter image description here

enter image description here

我在多对象json上面遇到的问题是,我遍历对象数组并在循环中使用新的formControl创建formGroup,然后尝试将其推入formArray而不是成功,但没有成功,任何帮助或建议都值得赞赏,我陷入了formArray vs FormBuilder vs FormGroup的困境,现在大脑无法正常工作:(

这是我要修改的广告链接https://stackblitz.com/edit/angular-dynamicforms-blogarticle-fjkjx4

解决方法

您可以只创建一个空的formArray来存储响应。
https://stackblitz.com/edit/angular-dynamicforms-blogarticle-jns9xq

public formResponses: FormArray = new FormArray([]);
  onSubmit(form) {
    if (form.valid) {
      this.formResponses.push(new FormControl(form.value));
    }
  }