FormArray 是 Angular 框架中的一个类,用于管理一组表单控件(FormControl 或 FormGroup)。它允许你动态地添加、删除和操作这些控件。复选框(Checkbox)是一种常见的表单控件,通常用于多选场景。
以下是一个使用 Angular 创建带有复选框的自定义 FormArray 的示例:
import { Component } from '@angular/core';
import { FormBuilder, FormArray, FormControl } from '@angular/forms';
@Component({
selector: 'app-dynamic-form',
template: `
<form [formGroup]="form">
<div formArrayName="interests">
<div *ngFor="let interest of interests.controls; let i = index" [formGroupName]="i">
<input type="checkbox" formControlName="checked" (change)="onCheckboxChange(i, $event)">
{{ interest.get('name').value }}
</div>
</div>
<button (click)="addInterest()">Add Interest</button>
</form>
`
})
export class DynamicFormComponent {
form = this.fb.group({
interests: this.fb.array([])
});
constructor(private fb: FormBuilder) {}
get interests() {
return this.form.get('interests') as FormArray;
}
addInterest() {
const interestGroup = this.fb.group({
name: [''],
checked: [false]
});
this.interests.push(interestGroup);
}
onCheckboxChange(index: number, event: any) {
const control = this.interests.at(index).get('checked');
control.setValue(event.target.checked);
}
}
问题:复选框状态不同步。
原因:可能是由于表单控件的双向数据绑定没有正确设置,或者事件处理函数没有正确更新控件状态。
解决方法:
formControlName
和 formGroupName
。onCheckboxChange
方法所示。通过这种方式,你可以确保复选框的状态与表单模型保持同步,并且能够动态地管理表单控件。
双11音视频系列直播
小程序云开发官方直播课(应用开发实战)
云+社区沙龙online第6期[开源之道]
小程序云开发官方直播课(应用开发实战)
腾讯云存储知识小课堂
企业创新在线学堂
实战低代码公开课直播专栏
Techo Day
高校公开课
实战低代码公开课直播专栏
实战低代码公开课直播专栏
领取专属 10元无门槛券
手把手带您无忧上云