如何在不触发valueChanges的情况下触发Angular FormControl验证?

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

我很好奇是否有人找到了一种无需使用即可触发验证的方法

updateValueAndValidity()
(根据
文档
,还会在 FormControl 上触发 valueChanges,这并不总是理想的行为)或
markAsTouched()
(这根本不正确,因为我们没有 touch 控件)。

我想到的一个解决方法是提取验证器逻辑,使其可以在 FormControl 之外执行,然后根据结果执行

setErrors()
,但也许有更好的方法?

angular angular-forms
2个回答
1
投票

参见官方文档:

https://angular.io/api/forms/AbstractControl#updateValueAndValidity

emitEvent:当为 true 或未提供时(默认),当控件更新时,statusChanges 和 valueChanges 可观察对象都会发出具有最新状态和值的事件。当为 false 时,不会发出任何事件。

编辑: 因此您可以在不发出事件的情况下进行验证。


0
投票

由于声誉,我无法对其进行投票,但我遇到了与此类似的问题,并发现@Kamil-now 对已接受答案的评论最有帮助,建议:

control.setErrors(control.errors);

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