¿Cuál es la diferencia entre required
y ng-required
(validación de formulario)?
¿Cuál es la diferencia entre required
y ng-required
(validación de formulario)?
Respuestas:
Los elementos de formulario AngularJS buscan el required
atributo para realizar funciones de validación. ng-required
le permite establecer el required
atributo en función de una prueba booleana (por ejemplo, solo requiere el campo B, por ejemplo, un número de estudiante , si el campo A tiene un cierto valor, si seleccionó "estudiante" como opción )
Como ejemplo, <input required>
y <input ng-required="true">
son esencialmente lo mismo
Si se pregunta por qué es así (y no solo make <input required="true">
o <input required="false">
), se debe a las limitaciones de HTML: el required
atributo no tiene ningún valor asociado; su mera presencia significa (según los estándares HTML) que el elemento es necesario. entonces angular necesita una forma de establecer / desarmar el valor requerido ( required="false"
sería HTML no válido)
<form method="post" action="/foo" novalidate>
. Nuevamente, este es un atributo html5, no relacionado con angularJS.
ng-required
apunta a una variable de alcance / controlador, Angular la monitorea en busca de cambios y establece el atributo requerido en consecuencia. Mientras que en el caso del required
atributo HTML simple no tienes ese tipo de flexibilidad. ¿No? Y mientras estamos en el mismo tema, ¿qué pasa ng-attr-required
? ¿Es exactamente lo mismo que ng-required
?
Me gustaría hacer un complemento para la respuesta de tiago :
Suponga que está ocultando un elemento usando ng-show
y agregando un required
atributo en el mismo:
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
arrojará un error algo como:
Un control de formulario no válido con nombre = '' no es enfocable
Esto se debe a que simplemente no puede imponer la required
validación a los hidden
elementos. ¡El uso ng-required
facilita la aplicación condicional de la validación requerida, que es simplemente increíble!
ng-if
lugar de ng-show
/ ng-hide
para esquivar ese problema potencial.
El atributo HTML required="required"
es una declaración que le dice al navegador que este campo es obligatorio para que el formulario sea válido. ( required="required"
es la forma XHTML, solo usar required
es equivalente)
El atributo Angular ng-required="yourCondition"
significa 'isRequired (yourCondition)' y establece el atributo HTML dinámicamente para usted según su condición.
También tenga en cuenta que la versión HTML es confuso , es que no es posible escribir algo como condicional required="true"
o required="false"
, sólo la presencia de los asuntos de atributos (medios actuales cierto)! Aquí es donde Angular te ayuda ng-required
.