Проверка пароля не работает в Angular

Привет я пытаюсь проверить пароль с помощью ng-show и сообщения об ошибках отображаются, даже если пароль правильный, а также отображаются на странице обновления.

Мой код: имя формы: registeruser

<!-- Set a password for the account -->
                        <div class="col-md-12" style="margin: 7px;">
                            <input type="password" id="password" name="password" style="height: 35px;" class="form-control input-lg" placeholder="Password" ng-model="register_password" required autocomplete="off" />
                            <!-- Button for viewing password -->
                            <input type="checkbox" id="eye" onclick="if(password.type=='text')password.type='password'; else password.type='text';" />
                        </div>
                        <!-- Error Message for password -->
                        <div class="error-message" ng-show="registeruser.password.$invalid">
                            Please enter at least 6 characters.
                        </div>
                        <div class="error-message" ng-show="registeruser.password.$pristine">
                            Please enter your password.
                        </div>

Я проверил ng-show с именем заполнителя, id и именем модели, но он не работает.
Также я хочу, чтобы ошибка пароля отображалась, если вкладки пользователя из поля пароль без ввода пароля и не на странице загрузки, когда поле Пароль пуст.

2 ответа

  1. используйте $dirtyдополнительно С $invalidдля отображения сообщения об ошибке. $dirtyустанавливается angular, чтобы определить, если пользователь поставил что-нибудь на вход.
    Если вы хотите, чтобы сообщение об ошибке отображалось только при вводе и потере фокуса без текста, который вы должны использовать ng-blur/ng-focusдля управления входом/выходом при вводе.
    По умолчанию angular управляет только тогда, когда пользователь вставляет текст во вход через $dirty, но не обнаруживает изменений, если пользователь входит и выходит из входа без ввода текста.

    Использование $dirty :

    <input type="password" id="password" name="password" style="height: 35px;" class="form-control input-lg" placeholder="Password" ng-model="register_password" required autocomplete="off" ng-minlength="6" />
    <!-- Error Message for password -->
                        <div class="error-message" ng-show="registeruser.password.$invalid && registeruser.password.$dirty">
                            Please enter at least 6 characters.
                        </div>
    
  2. Попробуйте что-нибудь подобное. Здесь «formSubmitted» — переменная области, установленная при нажатии на кнопку Отправить. Вы можете установить его в контроллере, как $scope.formSubmitted = true; внутри функции и вызовите ее с помощью ng-щелчка кнопки submit. Примечание: использование ng-minlength для проверки минимального требования 6 символов.

    <div class="col-md-12" style="margin: 7px;">
            <input type="password" id="password" name="password" style="height: 35px;" class="form-control input-lg" placeholder="Password" ng-model="password" ng-minlength="6" required autocomplete="off" />
         </div>
    
        <!-- Error Message for password -->
        <div class="error-message" ng-show="(registeruser.password.$error.minlength && !registeruser.password.$pristine) ||  (registeruser.password.$pristine && formSubmitted)">
               Please enter at least 6 characters.
        </div>
        <div class="error-message" ng-show="(registeruser.password.$error.required && !registeruser.password.$pristine) || (registeruser.password.$pristine && formSubmitted)">
               Please enter your password.
        </div>