Quelle est la différence entre required
et ng-required
(validation du formulaire)?
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-ilng-attr-required
? Est-ce exactement la même chose queng-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 unrequired
attribut sur le même:va lancer une erreur quelque chose comme:
En effet, vous ne pouvez tout simplement pas imposer de
required
validation sur leshidden
éléments. L'utilisationng-required
facilite l' application conditionnelle de la validation requise, ce qui est tout simplement génial !!la source
ng-if
au lieu deng-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 utilisantrequired
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"
ourequired="false"
, seule la présence de l'attribut compte (le présent signifie vrai)! C'est là que Angular vous aideng-required
.la source