arrays - 将逗号分隔列表绑定到Angular 9中的复选框
问题描述
在我的反应形式中,我有一个数组,我使用以下语法将复选框列表绑定到:数组结构是 {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)));
}
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>
现在我需要在页面加载时填充它以选择第一个和第三个选项。我尝试了以下代码,但它只选择了前两个选项。
TS
this.fc.rules.patchValue([1,3])
解决方案
当您执行 this.fc.rules.patchValue([1,3]) 时,它会将值 1 设置为规则 FormArray 的第一个控件,并将 3 设置为规则 FormArray 的第二个控件,但不会设置为第三个控件。
复选框 formcontrol 需要一个布尔值(真或假),在这里,当使用补丁设置 1 和 3 时,值会自动“转换”为真,因为这些是真实值。
如果要填充第一个和第三个值,请尝试以下操作:
this.fc.rules.patchValue([true,null, true])
推荐阅读
- python - 使用 pyyaml 转储嵌套列表失败
- php - 如何保护 php 中的 cookie?
- python - 存储在 .git 文件夹中的存储库信息(如 url 、工作分支)在哪里?
- sql - 在 PostgreSQL 中实现嵌套聚合的正确方法
- r - 基于参数的长组合调度 S4 方法
- reactjs - 处理 children.props
- android - Google Play 内部测试版轨道在 14 小时后未显示更新
- python - 如何从当前文件夹外导入模块?
- airflow - 气流执行间隔 - 使用 execution_date 和 next_execution_date 定义时间片是否标准?
- sql-server - 从 SQL 导出到 Access