Я думаю, что я хочу достичь довольно просто. Давайте будем иметь форму с обязательным полем, выбор для экземпляра (я также попробовал его с вводом, и это точно такая же ситуация).Показывать сообщения о проверке при нажатии кнопки
Я хочу показать ng-messages
только при нажатии кнопки. Если поле формы было дотронуто до нажатия кнопки, оно отлично работает. Но я не могу это сделать, если поле формы $untouched
.
Я решил его установить программно $touched
в поле формы, но мне интересно, есть ли способ решить его без этого «взлома».
// Any way to avoid this line??
$scope.myForm.favoriteColor.$setTouched();
//
Код для ссылки:
HTML:
<md-input-container>
<label>Favorite Color</label>
<md-select name="favoriteColor" ng-model="favoriteColor" required>
<md-option value="red">Red</md-option>
<md-option value="blue">Blue</md-option>
</md-select>
<div class="errors" ng-messages="myForm.favoriteColor.$error" ng-show="validateWithHack">
<div ng-message="required">Required</div>
</div>
</md-input-container>
JS:
$scope.validateWithHack = function() {
if ($scope.myForm.$valid) {
alert('Form is valid.');
} else {
// Any way to avoid this line??
$scope.myForm.favoriteColor.$setTouched();
//
$scope.validateWithHack = true;
}
};
Я уверен, что это работает с предыдущими версиями углового-материал. Теперь я использую последнюю версию 1.1.1.
Вот plunker где проблема может быть легко воспроизведены.
Заранее спасибо.
Спасибо, что ответили на @joyBlanks !, но, боюсь, я не могу установить тип отправки для моего варианта использования. Я также попробовал просто установить новагинат, но не работает. Есть идеи? Идеальное решение будет отображать сообщение программно из контроллера ... BTW, в вашем плунтере тип кнопки - это файл, а не отправка. – troig
это потому, что форма подает вам использование can not type = submit, я бы сказал, если вы хотите переопределить форму отправки ng-submit = "$ event.preventDefault()" no? – joyBlanks
Еще раз спасибо :) Не уверен, правильно ли я вас понял. Это [это] (http://codepen.io/anon/pen/RGkwGp), что вы имеете в виду? Кажется, работает, хотя я не понимаю, почему мой исходный код работал в предыдущих версиях углового материала ... Пожалуйста, отредактируйте свой ответ с предложениями своих комментариев, и я соглашусь с ним. благодаря – troig