什么是updateValueAndValidity

Max*_*kyi 15 angular2-forms angular

这些文档陈述如下:

如果emitEvent为true,则此更改将导致FormControl上的valueChanges事件被发出.默认为true(因为它落到updateValueAndValidity).

这是什么updateValueAndValidity

Gün*_*uer 15

您可以订阅控件或整个表单的值更改.

updateValueAndValidity允许您修改一个或多个表单控件的值,该标志允许您指定是否要将此值发送给valueChanges订阅者.


Sim*_*ver 15

源代码有助于清楚地了解它在做什么:

https://github.com/angular/angular/blob/master/packages/forms/src/model.ts
Run Code Online (Sandbox Code Playgroud)

目前它似乎正在执行以下操作(此列表基于方法名称):

  • '设置初始状态' - 这使得.status'VALID' 除非所有控件都被禁用,在这种情况下它使它成为 'DISABLED'
  • '更新值' -.value如果控件被启用,这似乎设置,或者如果禁用则清除它。
  • '运行验证器' - 这会更新整个错误对象。因此,如果您设置了任何自定义错误,则会清除自定义错误。
  • “取消订阅” - 停止当时正在运行的任何异步验证器
  • 'Emit' 事件 -(如果选项中的 emitEvent != false)。这仅仅是valuestatus正常形态事件。
  • 使用相同的规则更新父级 - 除非onlySelf设置。

注意:它不会从树上下来,只会向上。

我希望他们能在文档中加入这样的内容。他们目前说“重新计算控件的值和验证状态”。这不是特别有帮助。


小智 5

updateValueAndValidity()方法属于 AbstractFormControl 类,用于以编程方式验证表单。

基本上,当您在运行时添加或删除验证器时,必须调用updateValueAndValidity()新的验证才能生效。