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

Posted

技术标签:

【中文标题】angular2 验证:在控件上查找当前验证器【英文标题】:angular2 validation: finding current validators on a control 【发布时间】:2016-11-30 17:05:20 【问题描述】:

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

基于这篇帖子Angular2 validator which relies on multiple form fields

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

this.form.controls["empID"].validator = Validators.compose([Validators.pattern("[0-9]7"), Validators.required]);
this.form.controls["empID"].updateValueAndValidity();

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

我是不是在想这个过程。要动态添加验证器,但前提是我知道所有验证器。

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于angular2 验证:在控件上查找当前验证器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular2 中触发表单验证器

Angular2:有条件的验证

angular2 表单验证 - .ng-invalid:not(form) 做啥

Angular2:例外:在控件上找不到指令注释

在 asp.net 控件上动态禁用验证

验证列表控件就地编辑