patchValue设置值并禁用该字段

时间:2019-07-04 07:46:59

标签: angular angular-reactive-forms

我正在推送具有某些值的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是我来自后端的矩阵。

1 个答案:

答案 0 :(得分:1)

您可以使用disable()方法动态地将FormControl设置为禁用。

documentation所述,patchValue()将不起作用,因为它仅用于设置FormControl的值(而不是状态)。

  

修补FormGroup的值。它接受带有控制的对象   名称作为键,并尽最大努力使值与正确的值匹配   组中的控件。

this.rowArray.controls[index].get('source').disable();