何时何地调用updateValueAndValidity



我不清楚我应该在何时何地调用updateValueAndValidity

假设我有一个包含许多formControls的formGroup。现在,根据一些单选选项的选择,触发一个事件来修改几个formControls的"验证器"。

Q1:我是在修改后立即调用updateValueAndValidity还是在完成所有修改调用后立即调用?

Q2:我是否要通过表格更新表格Group/formControls以更新所有formControls

this.form.updateValueAndValidity('emitEvent': false);

或单独调用每个窗体控件

this.form.get('control1').updateValueAndValidity('emitEvent': false);
this.form.get('control3').updateValueAndValidity('emitEvent': false);
this.form.get('control8').updateValueAndValidity('emitEvent': false);

您需要调用所有控件的更新以确保的安全

在这个答案中https://stackoverflow.com/a/54045398/13680115您可以看到该函数(updateValueAndValidity(更新父的行

目前它似乎在做以下事情(此列表基于方法名称(:

  1. "设置初始状态"-这会使.status变为"VALID",除非禁用了所有控件,在这种情况下,它会使其变为"disabled">
  2. "更新值"-如果控件已启用,则似乎设置了.value;如果禁用,则清除该值
  3. "运行验证器"-这会更新整个错误对象。因此,如果您设置了任何自定义错误,就会清除这些错误
  4. "取消订阅"-停止当时运行的任何异步验证器
  5. "Emit"事件-(如果选项中的emitEvent!=false(。这只是正常形式的事件的值和状态
  6. 使用相同的规则更新父级-除非只设置了Self

注意:它不会从树上往下走,只会向上走

注意这一行它不向下树,只向上所以如果您在form上调用函数,controls可能没有所需的行为,但更新控件将反映在表单上

因此,尽管可能很麻烦,但您需要更新每个控件的值和有效性

相关内容

  • 没有找到相关文章

最新更新