Angular2触发自定义验证器

时间:2017-04-03 06:58:01

标签: angular input

我已经完成了一个自定义验证器,我将其应用于我的两个输入之一:

<input type="text"
     class="validate"
     [(ngModel)]="foo"
     name="foo"
     ngControl="foo"
     customValidator                                   
     [validatorArg]="blah"
/>

<input type="text"
     class="validate"
     [(ngModel)]="blah"
     name="blah"
/>

customValidator取决于第二个输入。所以我在这里想要的是在我修改foo输入时触发blah输入上的验证器。 知道怎么做吗?我可以在ngModelChange

上完成

编辑:我的输入是表单的一部分,是FormGroup

1 个答案:

答案 0 :(得分:5)

模板驱动表单有点问题。我这样做了

<input name="blah" ... (ngModelChange)="triggerValidation(formObject.controls.foo)">

triggerValidation(control: AbstractControl) {
    control.markAsTouched();
    setTimeout(() => control.updateValueAndValidity(), 0);
}

如果同步运行updateValueAndValidity()(没有超时),它可能会使用“blah”输入的旧值。