Arrays 将逗号分隔列表绑定到9中的复选框

Arrays 将逗号分隔列表绑定到9中的复选框,arrays,angular,typescript,angular-reactive-forms,Arrays,Angular,Typescript,Angular Reactive Forms,在被动形式中,我有一个数组,我使用以下语法将复选框列表绑定到该数组: 数组的结构是{id:number,name:string} TS ngOnInit(): void { this.initFCForm(); this.addCheckboxes(); } initFCForm(): void { this.fcForm = this.formBuilder.group({ frequency : new FormControl('', [Validators.required]),

在被动形式中,我有一个数组,我使用以下语法将复选框列表绑定到该数组: 数组的结构是{id:number,name:string}

TS

ngOnInit(): void {
 this.initFCForm();
 this.addCheckboxes();
}

initFCForm(): void {
this.fcForm = this.formBuilder.group({
  frequency : new FormControl('', [Validators.required]),
  rules: new FormArray([])
});
}

get rulesFormArray() {
  return this.fcForm.controls.rules as FormArray;
}
private addCheckboxes() {
  this.businessrules.forEach(() => this.rulesFormArray.push(new FormControl(false)));
}
this.fc.rules.patchValue([1,3])
HTML

 <label class="col-md-7" formArrayName="rules" 
         *ngFor="let rule of rulesFormArray.controls; let i = index">
               <input type="checkbox" [formControlName]="i">
                                    {{businessrules[i].name}}
  </label>

执行此操作时,.fc.rules.patchValue([1,3])会将值1设置为规则FormArray的第一个控件,将值3设置为规则FormArray的第二个控件,但不会将值设置为第三个控件

复选框formcontrol需要一个布尔值(true或false),在这里,当使用patch设置1和3时,值会自动“转换”为true,因为这些是真实值

如果要填充第一个和第三个值,请尝试以下操作:


这个.fc.rules.patchValue([true,null,true])

您应该将复选框的
formControl
设置为
rule
属性,而不是带有当前索引的
formControlName
。谢谢@thib\u\o!