Quelle est la différence entre requiredet ng-required(validation du formulaire)?
Quelle est la différence entre requiredet ng-required(validation du formulaire)?
Réponses:
Les éléments de formulaire AngularJS recherchent l' requiredattribut pour effectuer des fonctions de validation. ng-requiredvous permet de définir l' requiredattribut 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' requiredattribut 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-requiredpointe 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' requiredattribut 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-showet en ajoutant un requiredattribut 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 requiredvalidation sur les hiddenéléments. L'utilisation ng-requiredfacilite l' application conditionnelle de la validation requise, ce qui est tout simplement génial !!
ng-ifau lieu de ng-show/ ng-hidepour 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 requiredest é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.