按键时标记为ng的必填字段有效,即使是's是空的

Required field marked as ng-valid on keypress, even when it's empty

本文关键字:即使是 有效 字段 记为 ng      更新时间:2023-09-26

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

这是控制(我使用的是Jade模板):

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

最初,控件按预期标记为ng原始和ng无效:

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

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

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

这不应该是无效的,而应该是被触摸的吗?我还尝试添加ngControl,认为我缺少了一些与ngControl类相关的行为,但这也没有改变行为。

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

  • https://github.com/angular/angular/issues/8048
  • https://github.com/angular/angular/issues/6527看起来这将在下一个测试版中修复

我在尝试对论坛进行颜色编码以显示验证时遇到了这个问题。我用了ng模式来修复它。也许试试吧?我知道有一个简单的reg表达式可以用来检测数字。查看此处以获取reg表达式帮助。