给定:
<input type="password" ng-model="ctrl.fields.password" ng-minlength="8" />
{{ ctrl.fields.password.length }}
在达到验证要求的最小长度之前,不会显示任何内容。也就是说,如果密码的长度小于8,则模型的值为null
。删除 ng-minlength
可以解决该问题。
这是非常意外的行为,因为字段的有效性应该与模型值的访问无关。
在 Angular 1.5 中是否有办法解决这个问题?我想在用户键入时向他们显示密码的长度,但由于该值在至少 8 个字符之前为 null
,所以我不能。
最佳答案
这就是 Angular $validators
的工作方式:如果验证失败,值不会从 View 传递到模型,并且模型会重置。
这里很好地介绍了 Angular 内置验证的工作原理:
http://blog.thoughtram.io/angularjs/2015/01/11/exploring-angular-1.3-validators-pipeline.html
如果您不喜欢这个,angular-ui-validate是一个以无中断方式工作的好包(即模型始终更新,您决定如何处理验证结果)。
关于javascript - Angular : Cannot retrieve value of ng-model when ng-minlength is not satisifed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37599884/