ng-pattern не показывает $error.pattern

У меня есть скрипт здесь, и ng-pattern работает правильно, потому что scope.subnet отображается в Output только после того, как input соответствует шаблону. Но ng-show не отображает никакой ошибки, если ng-pattern не соответствует

<body ng-contoller="myConfigGenCtr">
  <form novalidate name="myForm">
            <div class="form-group">
                <label for="hostname">Firewall hostname</label>
                <input type="text" ng-model="hostname" class="form-control" id="hostname">
            </div>
            <div class="form-group">
                <label for="subnet">Firewall subnet</label>
                <input type="text" ng-model="subnet" class="form-control" id="subnet"
                       required ng-pattern="/^(?:[0-9]{1,3}\.){3}/" >
                <div class="custom-error"  ng-show="myForm.subnet.$error.pattern">
                    Not a valid subnet, should be i.e. 10.x.y. (3 bytes only)</div>
            </div>
        </form>
  <div>Output: {{subnet}}</div>      
</body>

1 ответ

Решение

Когда вы добавляете тег формы с его именем, angular создает scope переменная для этого name значение атрибута & добавить все поля формы, которые имеют name атрибутов. Переменная атрибута этих полей создается внутри объекта области формы. Как здесь вы используете myForm это означает $scope.myFrom имеет всю информацию о полях формы. как его действительность, используя $valid, $invalid, $error, так далее.

Здесь вы используете ng-show="myForm.subnet.$error.pattern" на subnet элемент формы. Вы пропустили, чтобы добавить name="subnet" атрибут в поле ввода, который оказывается subnet проверка элементов недоступна внутри myForm переменная области видимости

наценка

<input type="text" name="subnet" ng-model="subnet" class="form-control" 
id="subnet" required ng-pattern="/^(?:[0-9]{1,3}\.){3}/" >

Рабочий планкр

Другие вопросы по тегам