ng-message 在动画进行时 $error 发生变化时消失
ng-message disappears when $error changes while animation is in progress
我有一个带有自定义异步验证器的表单。我认识到有时即使输入字段中的值无效,错误消息也会消失。
我能够使用普通验证器重现该问题:codepen example
HTML:
<div ng-app="app" ng-controller="FormController" layout-padding>
<form name="inputForm">
<md-input-container>
<input type="text" name="inputValue" custom-validator ng-model="model.value" />
<label>input value</label>
<div ng-messages="inputForm.inputValue.$error">
<div ng-message="custom-validator">This field is invalid</div>
</div>
</md-input-container>
<div>inputForm.inputValue.$error = {{inputForm.inputValue.$error | json}}</div>
</div>
JS:
var app = angular.module('app', ['ngMaterial', 'ngMessages']);
app.controller('FormController', ['$scope', function($scope) {
$scope.model = {
value: '',
asyncValue: ''
}
}]);
app.directive('customValidator', function() {
return {
require: 'ngModel',
link: function (scope, element, attr, ctrl) {
ctrl.$validators['custom-validator'] = function(model, view) {
return (model.length % 2) == 0;
}
}
}
})
当我慢速输入一个值时,错误消息正确出现并消失。但是,当我快速键入时,即使输入无效,错误消息也会消失。问题似乎发生在 $error 值发生变化而错误消息的动画仍在进行中。
我是不是哪里做错了?
这是一个 angular 错误。它在 1.4.7 中得到修复。
我有一个带有自定义异步验证器的表单。我认识到有时即使输入字段中的值无效,错误消息也会消失。
我能够使用普通验证器重现该问题:codepen example
HTML:
<div ng-app="app" ng-controller="FormController" layout-padding>
<form name="inputForm">
<md-input-container>
<input type="text" name="inputValue" custom-validator ng-model="model.value" />
<label>input value</label>
<div ng-messages="inputForm.inputValue.$error">
<div ng-message="custom-validator">This field is invalid</div>
</div>
</md-input-container>
<div>inputForm.inputValue.$error = {{inputForm.inputValue.$error | json}}</div>
</div>
JS:
var app = angular.module('app', ['ngMaterial', 'ngMessages']);
app.controller('FormController', ['$scope', function($scope) {
$scope.model = {
value: '',
asyncValue: ''
}
}]);
app.directive('customValidator', function() {
return {
require: 'ngModel',
link: function (scope, element, attr, ctrl) {
ctrl.$validators['custom-validator'] = function(model, view) {
return (model.length % 2) == 0;
}
}
}
})
当我慢速输入一个值时,错误消息正确出现并消失。但是,当我快速键入时,即使输入无效,错误消息也会消失。问题似乎发生在 $error 值发生变化而错误消息的动画仍在进行中。
我是不是哪里做错了?
这是一个 angular 错误。它在 1.4.7 中得到修复。