Я использую Angular-Messages с Angular-Material v1.0.9. У меня есть md-dialog
, внутри которого есть форма с полями, созданными с помощью ng-repeat
:
<form name="modal.dynamicForm" flex="80" layout="column">
<md-input-container ng-repeat="field in modal.model.fields">
<ng-form name="innerForm">
<label>{{ field.label }}*</label>
<input type="text" ng-model="field.value" name="{{ field.name }}" ng-pattern="field.pattern" required />
<div ng-messages="innerForm[field.name].$error">
<div ng-message="required">{{ 'fieldRequired' | translate }}</div>
<div ng-message="pattern">{{ field.patternError }}</div>
</div>
</ng-form>
</md-input-container>
</form>
Angular-Messages используются для отображения ошибок формы. Проблема в том, что когда я использую сообщения required
и pattern
, они иногда отображаются, а иногда нет. Он работал правильно, когда не было проверки регулярных выражений. Сценарий, например:
- У меня есть поле, которое должно быть числом. Я ввожу неправильное значение, например. отображается текстовое сообщение об ошибке.
- Я удаляю значение из поля, чтобы оно было пустым. Теперь ошибка
required
должна отображаться, но ее нет. Однако есть красная рамка, информирующая об ошибке. - Теперь я ввожу правильное значение, например. 10 - ожидаемого сообщения нет.
- Опять ввожу неверное значение - теперь отображается ошибка.
Приведенный выше сценарий можно повторить, и он всегда верен — мне нужно ввести правильное значение, прежде чем ошибка снова отобразится.
Я нашел один обходной путь: добавить md-auto-hide
в контейнер с ng-messages
, но теперь ошибки отображаются даже сразу после открытия модального окна, а это не то, что мне нужно. Кто-нибудь сталкивался с подобной проблемой и нашел какое-то решение? Буду признателен за любую помощь.
Изменить
Я создал скрипку, которая представляет проблему.
<div ng-messages="innerForm[field.name].$error" multiple>
- person troig   schedule 06.07.2016ng-pattern
иng-messages
. Формы будут отправлены с сервера, поэтому я должен быть готов к различным сценариям. - person PJDev   schedule 06.07.2016