Ошибка угловой формы, если два поля не совпадают

#javascript #forms #angularjs

#javascript #формы #angularjs

Вопрос:

Есть ли способ сделать форму недействительной, если два ввода не совпадают (например, пароли) в Angular? Похоже на form.password.$error.required ?

Ответ №1:

  pwd1:<input type="password" ng-model="pwd1" required /><br />
 pwd2:<input type="password" ng-model="pwd" required /><br />

      <div ng-show="pwd1 amp;amp; pwd">Invalid:
        <span ng-show="pwd1!==pwd">Wrong</span>
        <span ng-show="pwd1===pwd">Correct</span>
      </div>
  

Это просто проверяет, совпадают ли оба пароля.
Проверка угловой формы

Также проверьте этот угловой пользовательский интерфейс, который имеет директиву сопоставления паролей

Комментарии:

1. Я видел много решений с помощью ng-директивы, но это проще. Интересно, есть ли в этом какой-либо недостаток, потому что пока у меня все работает нормально.

Ответ №2:

Вы можете использовать Angular UI, у него есть ui-validate директива:

 <input name="password" required ng-model="password">
<input name="confirm_password" ui-validate=" '$value==password' " ui-validate-watch=" 'password' ">
  

Или вы можете создать свою собственную директиву для этого

 myApp.directive('matchPassword', function () {
    return {
        require: 'ngModel',
        restrict: 'A',
        scope: {
            matchPassword: '='
        },
        link: function (scope, elem, attrs, ctrl) {
            scope.$watch(function () {
                return (ctrl.$pristine amp;amp; angular.isUndefined(ctrl.$modelValue)) || scope.matchSenha === ctrl.$modelValue;
            }, function (currentValue) {
                ctrl.$setValidity('matchPassword', currentValue);
            });
        }
    };
});
  

и используйте это так:

 <input required name="passwordConfirm" match-password="model.Password" />