david bryan alcocer cañete
Nicolas Molina
ProfesorExacto 11 métodos ya listos para usarse!
¿Qué son las validaciones en Angular?
Las validaciones en Angular son herramientas esenciales que te permiten asegurar la integridad y corrección de los datos ingresados en tus formularios. Angular ofrece once métodos de validación predefinidos que te permiten verificar si los campos cumplen con ciertas condiciones, como rangos numéricos, formatos de correo electrónico, y más. Es recomendable familiarizarse con estos validadores antes de implementar validaciones personalizadas.
¿Cuáles son los validadores disponibles en Angular?
Angular ofrece una serie de validadores que facilitan el desarrollo de formularios confiables:
Min y Max: Para establecer rangos numéricos. Ideal para precios, edades u otros valores numéricos.
Required y RequiredTrue: Asegura que un campo sea obligatorio; el segundo variador es útil para checkboxes que deben estar activados (true).
Email: Verifica que el campo contenga una dirección de correo electrónico válida.
MinLength y MaxLength: Limita la longitud de las cadenas de texto. Útil para limitar caracteres en comentarios o descripciones.
Pattern: Implementa expresiones regulares para validaciones complejas, como nombres sin caracteres extraños.
Validators Compuestos y Asíncronos: Usados para validaciones más avanzadas, combinando múltiples condiciones o validaciones que dependen de datos externos.
¿Cómo implementar validaciones en Angular?
Implementar validaciones es un proceso que se realiza mediante el uso de directivas en los formularios HTML y gestión de errores con mensajes adecuados para la interfaz de usuario:
<input type="email" formControlName="email" required> <div *ngIf="emailField.hasError('required')">Este campo es obligatorio</div> <div *ngIf="emailField.hasError('email')">Esto no es un email válido</div>
Para la validación de números o rangos:
<input type="number" formControlName="age" min="18" max="100" required> <div *ngIf="ageField.hasError('min')">Debe ser mayor de edad</div> <div *ngIf="ageField.hasError('max')">Debe ser menor de 100 años</div>
Y para aplicar una expresión regular en un nombre:
Validators.pattern('^[a-zA-Z\s]+$')
¿Cuáles son las recomendaciones para validaciones efectivas?
Conoce los validadores estándar: Antes de personalizar, explora los validadores por defecto para elegir los más adecuados.
Utiliza mensajes claros: Acompaña las validaciones con mensajes de error que indiquen exactamente qué está mal.
Sé coherente: Asegúrate de que las validaciones sean uniformes a lo largo de toda la aplicación para ofrecer una experiencia de usuario constante.
Exprésate con expresiones regulares: Una herramienta poderosa para validaciones complejas que aseguran que los datos cumplan con las especificaciones exactas.
Realiza pruebas exhaustivas: Verifica que todas las condiciones se cumplan apropiadamente, probando los formularios con diferentes datos.
La implementación de estos validadores en Angular refuerza la funcionalidad y fiabilidad de tus aplicaciones. Estos pasos son un buen punto de partida para cualquier desarrollador que busca mejorar la interacción de usuario en formularios web. Con práctica y creatividad, puedes adecuar estas técnicas para cubrir más casos de uso y proporcionar una experiencia fluida y segura.
La url para la validación de las expresiones regulares:
Validar nombre y apellido:
^([Aa-zA-ZáéíóúÁÉÍÓÚÑñ]{2,}\s?){2,4}$
Validar IP:
^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(\.(?!$)|$)){4}$
david bryan alcocer cañete
Nicolas Molina
ProfesorExacto 11 métodos ya listos para usarse!
Luis Alfonso Sarmiento Heredia
Al usar for mularios reactivos se rompe todo el tipodo que hemos aprendido
Jonathan Márquez
el vídeo está incompleto, al inicio menciona las validaciones nullValidator, compose y composeAsync pero no las explica ni en la diapositiva, ni en los ejemplos prácticos del video
fabian Flechas
estoy tratando de validar un campo date en formato MM/DD/YYY pruebo esto pero no me esta funcionando. Validators.pattern(/^\d{1,2}/\d{1,2}/\d{4}$/)
alguna sugerencia ? Gracias
Juan Manuel Velez
buenos dias fabias, prueba con esta expresion
Validators.pattern(/^\d{1,2}\/\d{1,2}\/\d{4}$)
Te recomiendo la pagina de regex101 cuando estes realizando Expresiones regulares.
en este caso los caracteres / significan algo por lo que tienes que poner un '' delante para que la expresión regular lo tome como un literal
Juan Manuel Velez
en este caso los caracteres / significan algo por lo que tienes que poner un \ delante para que la expresión regular lo tome como un literal
Fernando Garcia
como hacer para que al momento que en un input toque una letra salga el mensaje de error que solo se puede ingresar numeros o al contrario que sea solo letras al precionar un numero en el teclado
Andres Felipe Pinto Becerra
Con el validador de pattern lo puedes hacer, se debe usar la expresión regular correspondiente para que solo acepte letras o números, según sea el caso.
Matias Romero
Si en el campo "name" tengo dos validadores como por ejemplo, mínimo de cuatro caracteres y solo letras. Como hago para que no muestre los dos errores a la vez? Es decir, si ingresa números que solo me muestre el error que le indique que son solo letras y que no muestra el error de mínimos de carácter.
Andres Felipe Pinto Becerra
Podrías mirar si esos validadores son mutuamente excluyentes, con eso si uno sucede en el *ngIf del otro mensaje de error se se debe confirmar que este en falso el error que activa el otro mensaje.
Pero uno de ellos debe ser el error que va a sobresalir sobre el o los otros, el que tenga mayor relevancia para la aplicación.
Juan Carlos Frausto Arias
Si quiero validar un campo para inicio de sesión donde deba ingresar el numero de teléfono ó su email. ¿Debería usar una expresión regular o una condicional donde este que si el campo tenga 10 caracteres numéricos valide el numero de teléfono de lo contrario que valide que es un email?
Alex Camacho
ProfesorPuedes hacer ambas validaciones, yo crearía una función dentro de mi servicio que valide que tenga 10 caracteres numéricos y además este cumpla algún tipo de formato, dependerá de las necesidades de tu formulario también.
Valentín Eduardo González Morales
Cuando un checkbox es required significa que solo avanza si es true, si no se selecciona el checkbox es false y por se requerido no avanza, ¿cierto?
José Ángel Soriano Soriano
https://github.com/jasorglez/angularFormswithPlatzi/branches rama cap11-cap15
Félix Alejandro Zelaya Orellana
Excelente clase!! Siempre tuve la duda de cuantos y cuales validadores eran los disponibles
Juan Luna
Nicolás Cigüeña Sàinzs
Hay acentos, á-ú y acentos catalanes aquí en España, e incluso se usa la diéresis en algunos nombres, por lo que para este tipo de nombres y que no excluirlos, mi expresión regular podría ser
Validators.pattern(/^[a-záéíóúàèìòùüñ ]+$/gi)]
Andrés Antonio Azuara Portillo
Veo que sigue usando los campos que tenía creados compo ageField pero luego creó el FormGroup, no debería de cambialos por form.get('age')?
static min(min: number): ValidatorFn static max(max: number): ValidatorFn static required(control: AbstractControl): ValidationErrors | null static requiredTrue(control: AbstractControl): ValidationErrors | null static email(control: AbstractControl): ValidationErrors | null static minLength(minLength: number): ValidatorFn static maxLength(maxLength: number): ValidatorFn static pattern(pattern: string | RegExp): ValidatorFn static nullValidator(control: AbstractControl): ValidationErrors | null static compose(validators: ValidatorFn[]): ValidatorFn | null static composeAsync(validators: AsyncValidatorFn[]): AsyncValidatorFn | null