angular - 如何检查Angular反应形式中的所有复选框
问题描述
我有一个显示复选框列表的 Angular 表单:
<tbody formArrayName="approvedInvoices"
*ngFor="let approvedInvoice of approvedInvoices; let i = index">
<tr>
<td>
<input type="checkbox"
[formControlName]="i" id="{{i}}">
</td>
<td style="padding-top: 18px">
Invoice Number {{approvedInvoice.invoiceNumber}}
</td>
</tbody>
我在 ngInit() 中创建表单:
approvedInvoices: ApprovedInvoice[];
this.controls = this.approvedInvoices.map(c => new FormControl(false));
this.form = this.formBuilder.group({
approvedInvoices: new FormArray(this.controls)
});
这是我的模型:
export class ApprovedInvoice {
invoiceNumber: string;
}
这很好用,但我的问题是我不知道如何做一个 'select all' 。我可以得到这样检查的发票列表:
selectedInvoices() {
return this.form.value.approvedInvoices
.map((v, i) => v ? this.approvedInvoices[i] : null)
.filter(v => v !== null);
}
但我不知道如何检查所有的框。
到目前为止,我有这个:
selectAll() {
for (var _i = 0; _i < this.form.value.approvedInvoices.length; _i++) {
this.form.value.approvedInvoices[_i] = true;
}
它将所有发票标记为已选中,但复选框输入不会更改(即,未勾选
解决方案
使用 setValue 方法设置 formArray 中单个表单控件的值
selectAll(){
this.form.get('approvedInvoices').controls.map(control=>{
control.setValue(true);
});
}
推荐阅读
- java - 如何在 Webview 中保存用户名和密码
- python - Async Dash 作为 Thread 的阻塞协程?从未期待
- verilog - 阻塞和非阻塞分配错误的混合
- gdb - gdb以单字节模式打印十六进制数组
- c++ - OpenGL 无缘无故地剪辑一个对象
- python - 从帧按顺序制作视频
- react-native - 允许其他页面访问 TabNavigator React Native Navigation
- reactjs - 如何在反应中使用react-hook-form在父组件中获取价值形式的孩子
- python - PyQtGraph 在不同的屏幕未对齐轴中显示时
- django - 如何在 Cloud Run 的日志中显示 django 日志记录和错误日志?