Почему выберите меню $ invalid всегда true?

0

У меня есть HTML:

<form name="form">
     <select name="gender" ng-model="model" ng-required="true"
      ng-model-options="{ updateOn: 'mousedown blur'}">
          <option value="" disabled>--Select--</option> 
          <option value="Male">Male</option> 
          <option value="Female">Female</option> 
     </select>
</form>

<form-error element="gender"><p>Please select Gender</p></form-error>

Я использую angularJS javascript в директиве

.directive('formError', function() {
    'use strict';
     return {
        require: ['^form'],
        restrict: 'E',
        templateUrl: '/partials/form-fields/validations/error.html',
        scope: {},
        transclude: true,
        replace: true,
        link: function($scope, $element, $attr, form) {
            var element = $attr.element;

            $scope.form = form[0];

            $scope.$watch('form.' + element + '.$viewValue', function(newVal, oldVal){
            $scope.$dirty = $scope.form[element].$dirty;
            $scope.$valid = $scope.form[element].$valid;
            $scope.$invalid = $scope.form[element].$invalid;
            $scope.$value = newVal;

            console.log($scope.form.gender.$invalid);
         }, true);

         $scope.$watch('form.$submitted', function(newVal, oldVal){
             $scope.$submitted = newVal;
         }, true);
    }
});

Директива выше ссылок на эту html-страницу ниже

 <div class="input__error"
      ng-if="($dirty && $invalid && $value !== '') || ($submitted && $invalid)"
      ng-transclude></div>

Входной текст $ недействителен с true на false, когда я набираю текст, но в меню выбора, я выбрал Мужской, но он по-прежнему будет иметь значение true для $ недействительным. Я выбрал "Женщина", тогда он станет ложным для $ недействительным.

В принципе, если я выбираю Male, ошибка должна исчезнуть.

Любые идеи, почему? благодаря

  • 1
    Пожалуйста, создайте демо-версию в plunker, которая повторяет проблему
  • 0
    Это может быть связано с флагом ng-required. Помните, что Angular запускает проверку при загрузке страницы. Если в форме есть обязательное поле, а значение отсутствует, то эта форма сразу становится недействительной
Показать ещё 3 комментария
Теги:

1 ответ

0
ng-model-options="{ updateOn: 'mousedown blur'}

Это была проблема, которая вызывала мою проверку в меню выбора, мне просто пришлось ее удалить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню