Was ist der Unterschied zwischen required
und ng-required
(Formularvalidierung)?
Was ist der Unterschied zwischen required
und ng-required
(Formularvalidierung)?
Antworten:
AngularJS-Formularelemente suchen nach dem required
Attribut, um Validierungsfunktionen auszuführen. ng-required
Mit dieser Option können Sie das required
Attribut in Abhängigkeit von einem Booleschen Test festlegen (beispielsweise benötigen Sie nur Feld B - beispielsweise eine Schülernummer -, wenn das Feld A einen bestimmten Wert hat - wenn Sie "Schüler" als Auswahl ausgewählt haben. )
Als Beispiel <input required>
und <input ng-required="true">
sind im Wesentlichen das gleiche
Wenn Sie sich fragen, warum dies so ist (und nicht nur make <input required="true">
oder <input required="false">
), liegt dies an den Einschränkungen von HTML - das required
Attribut hat keinen zugeordneten Wert - seine bloße Anwesenheit bedeutet (gemäß HTML-Standards), dass das Element erforderlich ist - Winkel benötigt also eine Möglichkeit, den erforderlichen Wert zu setzen / zu deaktivieren ( required="false"
wäre ungültiges HTML)
<form method="post" action="/foo" novalidate>
. Auch dies ist ein HTML5-Attribut, das nicht mit angleJS zusammenhängt.
ng-required
Angular , wenn es auf eine Scope / Controller-Variable zeigt, diese auf Änderungen überwacht und das erforderliche Attribut entsprechend festlegt. Im Fall des einfachen HTML- required
Attributs haben Sie diese Flexibilität nicht. Nein? Und während wir uns mit demselben Thema befassen, was ist dann ng-attr-required
? Ist es genau das gleiche wie ng-required
?
Ich möchte ein Addon für Tiagos Antwort erstellen :
Angenommen, Sie verstecken ein Element, ng-show
indem Sie ein required
Attribut verwenden und hinzufügen :
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
wird einen Fehler auslösen wie:
Ein ungültiges Formularsteuerelement mit name = '' kann nicht fokussiert werden
Dies liegt daran, dass Sie Elemente einfach nicht required
validieren können hidden
. Die Verwendung ng-required
erleichtert die bedingte Anwendung der erforderlichen Validierung, was einfach fantastisch ist !!
ng-if
anstelle von ng-show
/ verwenden ng-hide
, um es zu umgehen.
Das HTML-Attribut required="required"
ist eine Anweisung, die dem Browser mitteilt, dass dieses Feld erforderlich ist, damit das Formular gültig ist. ( required="required"
ist das XHTML-Formular, nur die Verwendung required
ist äquivalent)
Das Angular-Attribut ng-required="yourCondition"
bedeutet "isRequired (yourCondition)" und legt das HTML-Attribut abhängig von Ihrer Bedingung dynamisch für Sie fest.
Beachten Sie auch, dass die HTML-Version verwirrend ist , es nicht möglich ist, etwas Bedingtes wie required="true"
oder zu schreiben required="false"
, nur das Vorhandensein des Attributs ist wichtig (vorhanden bedeutet wahr)! Hier hilft Ihnen Angular ng-required
.