什么是updateValueAndValidity

问题描述 投票:0回答:3

这些文档说明以下内容:

如果emitEvent为true,则此更改将导致 valueChanges 事件 要发出的 FormControl。这默认为 true (当它下降时 直到 updateValueAndValidity)。

这是什么

updateValueAndValidity

angular angular2-forms
3个回答
38
投票

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

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


23
投票

源代码有助于明确它正在做什么:

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

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

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

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

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


2
投票

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

基本上,当您在运行时添加或删除验证器时,必须调用

updateValueAndValidity()
才能使新验证生效。

© www.soinside.com 2019 - 2024. All rights reserved.