【发布时间】:2017-03-19 19:15:12
【问题描述】:
我现在被以下问题困住了一段时间。我正在实现一个 angular 2 自定义验证器,它只是检查一个数字是否在一个范围内。像这样使用,一切正常:
<input type="text" id="doseSimple" class="form-control"
required
name="doseSimple"
[(ngModel)]="doseSimple"
#doseControl ="ngModel"
validateRange
from="2"
to="20"
>
<div *ngIf="doseControl.errors && (doseControl.dirty || doseControl.touched)">
<span *ngIf="doseControl.errors.tooSmall">Too small</span>
<span *ngIf="doseControl.errors.tooBig">Too big</span>
</div>
就我而言,验证要复杂一些。有一个下拉菜单。 from 和 to 值取决于下拉菜单的选择。只有一个附加到设置 doseFrom doseTo 属性的下拉列表的事件:
<input type="text" id="name" class="form-control"
required
name="doseComplex"
[(ngModel)]="doseComplex"
#doseComplexControl ="ngModel"
validateRange
[from]="doseFrom"
[to]="doseTo"
>
<div *ngIf="doseComplexControl.errors && (doseComplexControl.dirty || doseComplexControl.touched)">
<span *ngIf="doseComplexControl.errors.tooSmall">Too small</span>
<span *ngIf="doseComplexControl.errors.tooBig">Too big</span>
</div>
验证器验证值,但使用 from 和 to 来自之前的选择。 from 和 to 的值就像落后了一步。如何解决?
我创建了一个 plunker 来显示问题: https://plnkr.co/edit/C0sbL8pRwsZcEZ5r1ODY?p=preview
【问题讨论】:
-
一切顺利
-
不幸的是不是:(。当您在文本框中键入新值时,是的,它工作正常。但是当在下拉列表中选择另一个范围时,验证器具有旧范围。当doseControl.updateValueAndValidity () 被调用(在组件中),验证器尚未获得新值。在调用doseControl.updateValueAndValidity() 之前如何强制绑定更新。
标签: validation angular typescript