Задать вопрос
qmax
@qmax
программер

Как в angular отменить ошибку серверной валидации?

Ошибки валидации с сервера я засовываю в форму вот таким образом:
$scope.form.$setValidity(fld, false);
$scope.form[fld].$dirty = true;
$scope.form[fld].$error.backendError = err;

После того, как пользователь осознал эти ошибки и изменил поле, серверная ошибка валидации, очевидно, становится невалидная и её надо удалить.

Как и какие свойства формы watchить для этого?
  • Вопрос задан
  • 2414 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
qmax
@qmax Автор вопроса
программер
Хрень какая-то.

.directive('inpWatched', function() {
        return {
            link: function(scope, iElem, iAttrs) {
                var myname = iAttrs.name;
                scope.$watch(function() { return iElem.hasClass('ng-dirty'); },
                             function(val) {
                                 delete scope.form[myname].$error.backendError;
                             });
            }
        };
    })
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Логично предположить, что в момент нажатия кнопки "Отправить" мы принимаем введенные данные за отправную точку дальнейшего процесса, следовательно я бы всем полям поставил $dirty = false. После того, как с сервера получили ошибки - проставляем их в соотв. инпуты, отмечаем серверную невалидность.
Как только пользователь меняет невалидное поле, оно становится $dirty, что сообщает нам, что с этого поля можно убрать серверную невалидность.
У меня работает по такому принципу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы