Quelle est la différence entre required
y ng-required
(validation du formulaire) ?
Réponses
Trop de publicités?Les éléments de formulaire AngularJS recherchent l'élément required
pour exécuter des fonctions de validation. ng-required
vous permet de définir le required
en fonction d'un test booléen (par exemple, ne demander que le champ B - disons, un numéro d'étudiant - si le champ A a une certaine valeur - si vous avez sélectionné "étudiant" comme choix )
A titre d'exemple, <input required>
y <input ng-required="true">
sont essentiellement la même chose
Si vous vous demandez pourquoi c'est de cette façon, (et pas seulement faire <input required="true">
o <input required="false">
), c'est en raison des limites du HTML - le format required
n'a pas de valeur associée - sa simple présence signifie (conformément aux normes HTML) que l'élément est requis - angular a donc besoin d'un moyen de définir/annuler la valeur requise ( required="false"
serait un HTML invalide)
Je voudrais créer un addon pour réponse de tiago :
Supposons que vous cachiez un élément en utilisant ng-show
et l'ajout d'un required
sur la même chose :
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
provoquera une erreur du type :
Un contrôle de formulaire invalide avec name='' n'est pas focalisable
C'est parce que vous ne pouvez tout simplement pas imposer required
validation sur hidden
éléments. Utilisation de ng-required
permet de faciliter appliquer sous condition la validation requise, ce qui est tout simplement génial !
En Attribut HTML required="required"
est une déclaration indiquant au navigateur que ce champ est obligatoire pour que le formulaire soit valide. ( required="required"
est la forme XHTML, il suffit d'utiliser required
est équivalent)
En Attribut Angular ng-required="yourCondition"
signifie "isRequired(yourCondition)" et définit l'attribut HTML dynamiquement pour vous en fonction de votre état.
Notez également que la version HTML prête à confusion c'est no Il est possible d'écrire quelque chose de conditionnel comme required="true"
o required="false"
, seule la présence de l'attribut compte (présent signifie vrai) ! C'est là qu'Angular vous aide avec ng-required
.