什么是updateValueAndValidity

时间:2017-02-13 06:24:01

标签: angular angular2-forms

These docs声明如下:

  

如果emitEvent为true,则此更改将导致valueChanges事件   要发出的FormControl。默认为true(因为它下降   通过updateValueAndValidity)。

这是updateValueAndValidity是什么?

3 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:1)

我同意上述答案。 只是补充一下,所有与控制相关的更改只有在您使用此声明时才会反映出来,即

 updateValueAndValidity() 

答案 2 :(得分:0)

源代码可以帮助您准确地弄清它在做什么:

https://github.com/angular/angular/blob/master/packages/forms/src/model.ts

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

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

注意:它不会下移到树上,而只会上移。

我希望他们在the docs中放入类似内容。他们目前说“重新计算控件的值和验证状态”。并不是特别有用。