Angular 如何将对象数组映射到角度方向上的formarray

Angular 如何将对象数组映射到角度方向上的formarray,angular,angular-forms,formarray,Angular,Angular Forms,Formarray,将数据数组映射到数组中的复选框的正确方法是什么? 我尝试了下面的代码,但它不起作用…目标是从httpclient获取信息并将其映射到数据数组,这没问题,但无法将数据数组映射到正确的数组形式 data = [ { id: false, name: "Ovo" }, { id: false, name: "Ono" }, { id: false, name: "Levo" }, { id: false, name: "Desno" } ];

将数据数组映射到数组中的复选框的正确方法是什么? 我尝试了下面的代码,但它不起作用…目标是从httpclient获取信息并将其映射到数据数组,这没问题,但无法将数据数组映射到正确的数组形式

data = [
      { id: false, name: "Ovo" },
      { id: false, name: "Ono" },
      { id: false, name: "Levo" },
      { id: false, name: "Desno" }
    ];
模板

<form [formGroup]="postForm">
  <div formGroupName="detaljne">
    <div
      formArrayName="checkboxes"
      *ngFor="let data of data; let i = index"
    >
      <input [id]="data.id" type="checkbox" [formControl]="checkboxes[i]" />
      <label [for]="data.id">
        {{ data.name }}</label
      >
    </div>
  </div>
</form>

{{data.name}

您只需在索引的复选框数组基中设置formControtName

这就是我如何设置控件数据的方法

  ngOnInit() {
    const cData: IControls<boolean>[] = [
      { value: false, name: "Ovo" },
      { value: true, name: "Ono" },
      { value: false, name: "Levo" },
      { value: true, name: "Desno" }
    ]
    this.updateDataControls(cData)

  }

  updateDataControls(controls: IControls<any>[]) {
    this.data = controls;
    const controlsForm = this.form.get('controls').get('checkboxes') as FormArray;
    for (const c of controls) {
      controlsForm.push(this.fb.control(c.value))
    }
  }
ngOnInit(){
常量cData:IControls[]=[
{value:false,名称:“Ovo”},
{value:true,名称:“Ono”},
{value:false,名称:“Levo”},
{value:true,名称:“Desno”}
]
此.updateDataControl(cData)
}
UpdateDataControl(控件:IControls[]){
这个数据=控制;
const controlsForm=this.form.get('controls')。get('checkbox')作为FormArray;
用于(控制常数c){
控件窗体推送(此.fb.control(c.value))
}
}
模板


{{c.name}}
请在中查看完整的示例
  ngOnInit() {
    const cData: IControls<boolean>[] = [
      { value: false, name: "Ovo" },
      { value: true, name: "Ono" },
      { value: false, name: "Levo" },
      { value: true, name: "Desno" }
    ]
    this.updateDataControls(cData)

  }

  updateDataControls(controls: IControls<any>[]) {
    this.data = controls;
    const controlsForm = this.form.get('controls').get('checkboxes') as FormArray;
    for (const c of controls) {
      controlsForm.push(this.fb.control(c.value))
    }
  }
<div [formGroup]="form">
    <div formGroupName="controls">
        <div formArrayName="checkboxes">
            <div *ngFor="let c of data;let index = index">
                <label>{{c.name}}</label>
        <input type="checkbox" [formControlName]="index" >
      </div>
     </div>
  </div>
</div>