"Обязательная" проверка не работает в <select> со значением по умолчанию

У меня есть обязательный <select> поле:

<select name="service_id" class="Sitedropdown" style="width: 220px;" 
        ng-model="ServiceID" 
        ng-options="service.ServiceID as service.ServiceName for service in services"
        required> 
  <option value="">Select Service</option> 
</select> 

Когда он пуст, в форме должно отображаться сообщение об ошибке "Выбор службы". Вот рабочий поршень.

Это прекрасно работает, когда вы намеренно выбираете пустую опцию. Но когда вы перезагрузите страницу, service_id по умолчанию пусто и проверки нет. Как заставить AngularJS проверять значение по умолчанию?

2 ответа

Решение

Ваш код:

ng-show="myForm.service_id.$dirty && myForm.service_id.$invalid"

Это значит - если значение грязное (было изменено) и недопустимо. Сначала удалите, и вы получите то, что хотите.

Проверки достоверности выполняются только после значения, связанного с ng-model изменяется как минимум один раз или когда пользователь пытается отправить форму. Если бы это было не так, все обязательные поля формы были бы отображены с ошибкой сразу после загрузки страницы, что было бы довольно нежелательным поведением.

Вот почему вы видите ошибку только при выборе чего-то другого, а затем возвращении его к пустому значению.

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