Quelle est la différence entre required
et ng-required
(validation du formulaire)?
Quelle est la différence entre required
et ng-required
(validation du formulaire)?
Réponses:
Les éléments de formulaire AngularJS recherchent l' required
attribut pour effectuer des fonctions de validation. ng-required
vous permet de définir l' required
attribut en fonction d'un test booléen (par exemple, ne nécessite 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 )
À titre d'exemple, <input required>
et <input ng-required="true">
sont essentiellement la même chose
Si vous vous demandez pourquoi il en est ainsi (et pas seulement make <input required="true">
or <input required="false">
), c'est en raison des limites de HTML - l' required
attribut n'a pas de valeur associée - sa simple présence signifie (selon les normes HTML) que l'élément est requis - donc angulaire a besoin d'un moyen de définir / annuler la valeur requise (ce required="false"
serait du HTML non valide)
<form method="post" action="/foo" novalidate>
. Encore une fois, il s'agit d'un attribut html5, non lié à angularJS.
ng-required
pointe vers une variable de portée / contrôleur, Angular la surveille pour les changements et définit l'attribut requis en conséquence. Alors que dans le cas de l' required
attribut HTML simple, vous n'avez pas ce genre de flexibilité. Non? Et pendant que nous sommes sur le même sujet, qu'en est-il ng-attr-required
? Est-ce exactement la même chose que ng-required
?
Je voudrais faire un addon pour la réponse de tiago :
Supposons que vous cachez un élément en utilisant ng-show
et en ajoutant un required
attribut sur le même:
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
va lancer une erreur quelque chose comme:
Un contrôle de formulaire non valide avec nom = '' n'est pas focalisable
En effet, vous ne pouvez tout simplement pas imposer de required
validation sur les hidden
éléments. L'utilisation ng-required
facilite l' application conditionnelle de la validation requise, ce qui est tout simplement génial !!
ng-if
au lieu de ng-show
/ ng-hide
pour contourner ce problème potentiel.
L' 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 le formulaire XHTML, juste en utilisant required
est équivalent)
L' attribut angulaire ng-required="yourCondition"
signifie 'isRequired (yourCondition)' et définit l'attribut HTML dynamiquement pour vous en fonction de votre condition.
Notez également que la version HTML prête à confusion , il n'est pas possible d'écrire quelque chose de conditionnel comme required="true"
ou required="false"
, seule la présence de l'attribut compte (le présent signifie vrai)! C'est là que Angular vous aide ng-required
.