"Обязательная" проверка не работает в <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
изменяется как минимум один раз или когда пользователь пытается отправить форму. Если бы это было не так, все обязательные поля формы были бы отображены с ошибкой сразу после загрузки страницы, что было бы довольно нежелательным поведением.
Вот почему вы видите ошибку только при выборе чего-то другого, а затем возвращении его к пустому значению.