为什么在窗体控件验证器发生更改时必须调用this.cdRef.detectChanges()以避免在表达式被检查错误后更改表达式?

时间:2019-07-16 08:23:04

标签: angular

我的不是问题,而是一个问题。 我有一种方法可以更改FormGroup中的验证器,并且如果删除cdRef.detectChanges(),则会收到如下错误消息:

  

在检查到错误后更改了表达式。

<select> html元素的(更改)事件中调用此方法。

我有此代码

constructor(
    private service: LoaderFreeService,
    private cdRef: ChangeDetectorRef
  ){}
....

 setRequiredOffice() {
    if (this.loaderFreeModalForm.get("startingScope").value === "ROLE") {
      this.cdRef.detectChanges();
      this.loaderFreeModalForm
        .get("startingOfficeName")
        .setValidators(Validators.required);
      this.cdRef.detectChanges();
    } else {
      this.cdRef.detectChanges();
      this.loaderFreeModalForm.get("startingOfficeName").clearValidators();
      this.cdRef.detectChanges();
    }
  }

编辑:我也尝试过使用this.loaderFreeModalForm.updateValueAndValidity(),但它仍然向我显示此错误。

0 个答案:

没有答案