我正在使用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类相关的一些行为,但这也没有改变行为。
答案 0 :(得分:1)
这是数字和选择字段的已知问题
答案 1 :(得分:0)
我尝试对论坛进行颜色编码以显示验证时遇到此问题。我使用ng-pattern来修复它。也许尝试一下?我知道有一个简单的reg表达式可用于检测数字。 Check out here用于表达式帮助。