ng-сообщение исчезает при изменении $error во время выполнения анимации

У меня есть форма с пользовательским асинхронным валидатором. Я обнаружил, что иногда сообщение об ошибке исчезает, даже если значение в поле ввода неверно.

Мне удалось воспроизвести проблему с помощью обычного валидатора: пример codepen

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 изменяется, когда анимация сообщения об ошибке все еще продолжается.

Я что-то сделал не так?


person raeffs    schedule 26.08.2015    source источник


Ответы (1)


Это угловая ошибка. Это было исправлено в 1.4.7.

person kvetis    schedule 02.10.2015