Rob*_*bin 1 forms arrays checkbox reactive angular
在使用反应式形式的 Angular 7 中,我试图构建一个复选框数组。我想使用对象数组而不是仅使用 [true, true, false] 作为结果。我的对象有一个名称、一个 ID 和一个布尔选定属性。
在我的打字稿中:
myForm: FormGroup
constructor(private fb: FormBuilder) {
this.myForm = this.fb.group({
myOptionsArray: this.fb.array([
{
id: 1,
name: 'Option 1',
selected: false
},
{
id: 2,
name: 'Option 2',
selected: true
},
{
id: 3,
name: 'Option 3',
selected: false
})
])
})
}
Run Code Online (Sandbox Code Playgroud)
我的模板:
<form [formGroup]="myForm">
<div formArrayName="myOptionsArray">
<div *ngFor="let myOption of myOptionsArray.controls; let i = index">
<div formGroupName="{{ i }}">
<input name="i" type="checkbox" [formControl]="myOption" />
<label> {{ myOption.get('name').value }} </label>
</div>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
我无法获取要更新的相应对象中的选定属性。如何设法让每个复选框仅更新数组中选定的属性?
在解决我的问题之前被引导到一个已经回答的问题。对于任何想知道的人:我需要将对象包装在 a 中formbuilder group,这使得可以在表单中访问字段。我的工作代码:
myForm: FormGroup
constructor(private fb: FormBuilder) {
this.myForm = this.fb.group({
myOptionsArray: this.fb.array([
this.fb.group({
id: 1,
name: 'Option 1',
selected: false
}),
this.fb.group({
id: 2,
name: 'Option 2',
selected: true
}),
this.fb.group({
id: 3,
name: 'Option 3',
selected: false
})
])
})
}
Run Code Online (Sandbox Code Playgroud)
更新后的模板:
<form [formGroup]="myForm">
<div formArrayName="myOptionsArray">
<div *ngFor="let myOption of myOptionsArray.controls; let i = index">
<div formGroupName="{{ i }}">
<input type="checkbox" [formControl]="myOption.get('selected')" />
<label> {{ myOption.get('name').value }} </label>
</div>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5149 次 |
| 最近记录: |