В чем разница между обязательным и обязательным нг?
В чем разница между required
а также ng-required
(проверка формы)?
3 ответа
Элементы формы AngularJS ищут required
атрибут для выполнения функций проверки. ng-required
позволяет установить required
атрибут в зависимости от логического теста (например, требуется только поле B - скажем, номер студента - если поле A имеет определенное значение - если вы выбрали "студент" в качестве выбора)
В качестве примера, <input required>
а также <input ng-required="true">
по сути одно и то же
Если вам интересно, почему это так, (а не просто сделать <input required="true">
или же <input required="false">
), это связано с ограничениями HTML - required
Атрибут не имеет ассоциированного значения - его простое присутствие означает (согласно стандартам HTML), что элемент является обязательным - поэтому angular нужен способ установить / отменить требуемое значение (required="false"
будет недействительным HTML)
Я хотел бы сделать дополнение для ответа Тиаго:
Предположим, вы скрываете элемент, используя ng-show
и добавив required
атрибут на то же самое:
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
выдаст ошибку что-то вроде:
Недопустимый элемент управления формы с именем ='' не может быть сфокусирован
Это потому, что вы просто не можете навязать required
проверка на hidden
элементы. С помощью ng-required
облегчает условно применять требуемую проверку, которая просто потрясающая!!
Атрибут HTML required="required"
это утверждение, сообщающее браузеру, что это поле необходимо для того, чтобы форма была действительной. (required="required"
это форма XHTML, просто используя required
эквивалентно)
Угловой атрибут ng-required="yourCondition"
означает "isRequired(yourCondition)" и динамически устанавливает для вас атрибут HTML в зависимости от вашего состояния.
Также обратите внимание, что HTML-версия сбивает с толку, невозможно написать что-то условное, как required="true"
или же required="false"
имеет значение только наличие атрибута (присутствует означает истина)! Здесь Angular поможет вам ng-required
,