Was ist der Unterschied zwischen requiredund ng-required(Formularvalidierung)?
Was ist der Unterschied zwischen requiredund ng-required(Formularvalidierung)?
Antworten:
AngularJS-Formularelemente suchen nach dem requiredAttribut, um Validierungsfunktionen auszuführen. ng-requiredMit dieser Option können Sie das requiredAttribut 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 requiredAttribut 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-requiredAngular , wenn es auf eine Scope / Controller-Variable zeigt, diese auf Änderungen überwacht und das erforderliche Attribut entsprechend festlegt. Im Fall des einfachen HTML- requiredAttributs 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-showindem Sie ein requiredAttribut 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 requiredvalidieren können hidden. Die Verwendung ng-requirederleichtert die bedingte Anwendung der erforderlichen Validierung, was einfach fantastisch ist !!
ng-ifanstelle 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 requiredist ä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.