在按键上标记为ng-valid的必填字段,即使它是空的

时间:2016-04-21 03:08:18

标签: javascript angular validation

我正在使用Angular 2,我在表单验证方面面临一个相当基本的问题。一个应该是数字的必需文本字段在第一个keydown事件后标记为有效,无论我输入的值是什么,我都无法猜测为什么。

这是控件(我正在使用Jade模板):

input.form-control(required, type='number', [(ngModel)]='details.averageAnnualVisitorCount', placeholder='Example: 5000000')

最初,控件按预期标记为ng-pristine和ng-invalid:

<input class="form-control ng-untouched ng-pristine ng-invalid" placeholder="Example: 5000000" required="required" type="number">

但是当我专注于该字段并按任意键(即使是无效键)时,控件被标记为有效,我不知道为什么。例如,我尝试过因使用type='number'而被拒绝的Z,但该字段仍标记为ng-valid,如下所示:

<input class="form-control ng-dirty ng-valid ng-touched" placeholder="Example: 5000000" required="required" type="number">

这不应该是ng-ditry ng-invalid和ng-touching而是?我也尝试添加ngControl,认为我缺少与ngControl类相关的一些行为,但这也没有改变行为。

2 个答案:

答案 0 :(得分:1)

这是数字和选择字段的已知问题

答案 1 :(得分:0)

我尝试对论坛进行颜色编码以显示验证时遇到此问题。我使用ng-pattern来修复它。也许尝试一下?我知道有一个简单的reg表达式可用于检测数字。 Check out here用于表达式帮助。