angular2验证:在控件上查找当前验证器

时间:2016-07-26 21:30:57

标签: angular2-forms

Angular RC4如何根据其他FormControls或FormGroups的状态添加和删除验证。

根据这篇文章Angular2 validator which relies on multiple form fields

在示例中 - 它使用.compose设置多个验证器。它用新的Validator.compose

替换现有的Validators
this.form.controls["empID"].validator = Validators.compose([Validators.pattern("[0-9]{7}"), Validators.required]);
this.form.controls["empID"].updateValueAndValidity();

我的问题是我无法找到FormControl(.add或.remove)来更改当前的验证(一次一个Validator)。如果我想添加/删除Validators.required,我将不得不拉出当前的验证器(另一个问题),然后在新的.compose中添加/删除require。 (上面的例子)

我是否过度思考这个过程。添加验证器动态工作,但前提是我知道所有验证器。

最后一件事我试图通过传入一个控件并评估是否检查了另一个控件来使这个通用,然后相应地应用/删除验证器。

1 个答案:

答案 0 :(得分:0)

Per Angular的文档说明这是不可能的。在AbstractControl documentation(FormControl扩展的类)上没有成员可以检索当前的验证器。

不幸的是,您唯一的选择是使用两种可用的方法来处理验证器:

setValidators() // Replaces all validators
clearValidators() // Removes all validators