我正在推送具有某些值的FormArray,并且在加载列表后,需要在某些字段中动态设置禁用的属性。 我的问题是:有没有办法仅使用patchValue来设置值和设置禁用的属性?
我已经尝试过这样的事情。rowArray.controls[index] .patchvalue({format:“ NUMBER”,disabled:true}),但它似乎不起作用。
this.rowList.forEach((el, index) => {
this.rowArray.push(
this.fb.group(
{
name: new FormControl(el.name, [
Validators.required,
Validators.maxLength(30),
Validators.pattern(this.BAN_SPECIAL_BUT_UNDERSCORE)
]),
source: new FormControl(el.source, Validators.required)
.....
然后是
if (this.rowArray.controls[index].get("source").value === "CSV") {
this.rowArray.controls[index].patchValue({
format: "NUMBER",
disabled: true
});
}
rowList是我来自后端的矩阵。
答案 0 :(得分:1)
您可以使用disable()
方法动态地将FormControl设置为禁用。
如documentation所述,patchValue()
将不起作用,因为它仅用于设置FormControl的值(而不是状态)。
修补FormGroup的值。它接受带有控制的对象 名称作为键,并尽最大努力使值与正确的值匹配 组中的控件。
this.rowArray.controls[index].get('source').disable();