如何在Angular中附加具有动态复选框数的ngModel?

如何在Angular中附加具有动态复选框数的ngModel?,angular,checkbox,Angular,Checkbox,我有一个包含复选框的动态编号的列表,每个复选框都有id属性 <li *ngFor='let i of someArray'> <input type="checkbox" id={{i}}> </li> 如果[(ngModel)]之前知道每个输入复选框,我可以将它们分配给这些数量众多的变量 但是,如何在保留双向绑定概念的同时,将复选框的动态数量附加到变量 我正在使用@angular/core 2.4.10。为此,您必须使用FormArray impor

我有一个包含复选框的动态编号的列表,每个复选框都有id属性

<li *ngFor='let i of someArray'>
<input type="checkbox" id={{i}}>
</li>


如果[(ngModel)]之前知道每个输入复选框,我可以将它们分配给这些数量众多的变量

但是,如何在保留双向绑定概念的同时,将复选框的动态数量附加到变量


我正在使用@angular/core 2.4.10。

为此,您必须使用
FormArray

import {FormGroup} from '@angular/forms';

constructor(private fb: FormBuilder) {}

public form: FormGroup = this.fb.group({
  checkboxes: this.fb.array([])
});
然后可以从控件中循环:

<li *ngFor='let control of form.checkboxes.controls; let i = index'>
  <input type="checkbox" id={{i}} [formControl]="control">
</li>



然后您可以通过执行
this.form.get('checkbox')来获取值。value

您必须使用
FormArray

import {FormGroup} from '@angular/forms';

constructor(private fb: FormBuilder) {}

public form: FormGroup = this.fb.group({
  checkboxes: this.fb.array([])
});
然后可以从控件中循环:

<li *ngFor='let control of form.checkboxes.controls; let i = index'>
  <input type="checkbox" id={{i}} [formControl]="control">
</li>



然后您可以通过执行
this.form.get('checkbox')来获取值。value

与@Chrillewoodz所说的不同,您不必被迫使用表单数组,尽管我建议您使用它。否则你可以

<li *ngFor='let box of someArray; let i = index'>
    <input type="checkbox" [id]="box" [(ngModel)]="someArray[i]">
</li>



与@Chrillewoodz所说的不同,您不必被迫使用表单数组,尽管我建议您使用它。否则你可以

<li *ngFor='let box of someArray; let i = index'>
    <input type="checkbox" [id]="box" [(ngModel)]="someArray[i]">
</li>


可以在您不知道将出现多少控件或表单中有动态元素时使用

FormArray在本文中得到了很好的解释。

可以在您不知道将出现多少控件或表单中有动态元素时使用


FormArray在这篇文章中有很好的解释

我做了一次编辑,让它工作起来因为您使用index访问复选框,所以我的问题仍然是,当后台满足某些条件时,如何取消选中/选中这些复选框?@techcomp您只需抓取表单控件并调用
control.setValue(false)
,其中,
control
是一个保存控件的变量。我做了一次编辑,使其工作因为您使用index访问复选框,所以我的问题仍然是,当后台满足某些条件时,如何取消选中/选中这些复选框?@techcomp您只需抓取表单控件并调用
control.setValue(false)
,其中
control
是一个保存控件的变量。是否有某种方法不通过索引访问它?否,它会抛出错误,因为Angular尝试访问动态创建的变量。如果不想使用formArray,则需要使用索引。是否有方法不通过索引访问它?否,它会引发错误,因为Angular尝试访问动态创建的变量。如果不想使用formArray,则需要使用索引。