Angular 2+自定义验证器"如果"填写另一个字段

时间:2017-09-19 22:26:20

标签: angular validation typescript angular2-forms

我试图为模板驱动的表单创建一个自定义验证器,如果在另一个字段中填充了一个字段则需要,但如果第一个字段为空,则第二个字段也不需要。

按照文档中的(typescript)示例构建自定义验证程序指令,我可以在字段上运行它,并将其传递给另一个字段的名称。现在这是我的问题......

如果在字段1中输入了值并且我检查字段2是否为空,我该如何设置"无效"在第2场? (我意识到我可以访问它的AbstractControl)。

如果我已设置"无效"在字段2上,我是否需要在字段2上单独使用验证器以在填写时删除其无效状态?

或者我应该添加内置"必需"当字段1的验证器被触发时(如果是这样的话),字段2上的验证器?

非常感谢任何指示!

1 个答案:

答案 0 :(得分:8)

我认为如果没有自定义验证器,您可以实现目标。

下面的代码来自模板驱动的表单 - 将第二个字段上的required验证程序指令绑定到第一个字段的ngModel值。因此,当第一个字段具有值时,您已经将条件验证应用于第二个字段。

First: <input type="text" name="first" [(ngModel)]="theFirst" #first="ngModel" >

Second: <input type="text" ngModel [required]="theFirst ? true : null " #second="ngModel" name="second"/>

<div *ngIf="second.errors">
  <span [hidden]="!second.errors.required">Second is required</span>
</div>

关于条件验证绑定的进一步讨论是here