Introducción. Al construir formularios en Angular es habitual querer retirar solo un error de validación concreto y conservar los demás. El método setErrors de Angular puede dificultarlo si no se usa con cuidado.
Escenario común. Imagina un formulario de búsqueda de productos con dos campos numéricos: minPrice y maxPrice. Reglas necesarias: ambos campos son obligatorios, sus valores deben ser como mínimo 0 y además debe cumplirse que minPrice sea menor o igual que maxPrice.
Implementación problemática. Un patrón extendido intenta resolver la tercera regla con un validador personalizado y, cuando la condición se cumple, llama a setErrors null en el control. Ese gesto elimina todos los errores a la vez, de modo que desaparecen también los mensajes de required o min aunque sigan siendo pertinentes.
Por qué ocurre. setErrors siempre reemplaza el mapa completo de errores del control. Si le pasas un objeto, sustituye los existentes por los nuevos; si le pasas null, el control queda sin errores. Por eso una llamada ingenua borra validaciones importantes que no querías tocar.
Solución segura para quitar solo un error. Procede en tres pasos: primero lee los errores actuales del control; luego elimina únicamente la clave del error objetivo; por último, vuelve a establecer los errores restantes o null si ya no queda ninguno. En términos prácticos: toma errors a partir de control.errors o un objeto vacío, borra errors.customError, y llama a control.setErrors con errors si tiene alguna clave o con null si está vacío. Si antes tenías un objeto de errores como { required: true, min: true, customError: true }, tras aplicar el patrón quedará { required: true, min: true } y conservarás los mensajes adecuados.
Consejos prácticos. Aplica este patrón dentro de validadores personalizados a nivel de FormGroup cuando la regla afecte a varios campos, como la relación entre minPrice y maxPrice. Evita setErrors null salvo que estés completamente seguro de que no existen otros errores que deban preservarse. Si necesitas emitir eventos de validación, recuerda actualizar el estado del control con updateValueAndValidity cuando proceda.
Conclusión. setErrors reemplaza todo el conjunto de errores del control. Para eliminar un error concreto sin perder los demás, lee el mapa actual, quita solo la clave que te interesa y restablece el resultado. Así mantendrás una experiencia de usuario coherente y mensajes de validación fiables incluso en escenarios complejos.
Sobre Q2BSTUDIO. En Q2BSTUDIO desarrollamos aplicaciones a medida y software a medida con foco en calidad, rendimiento y mantenibilidad. Nuestro equipo domina Angular y ecosistemas modernos para construir formularios robustos, validaciones avanzadas y arquitecturas escalables. Además ofrecemos inteligencia artificial, ia para empresas, agentes IA, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y power bi, integrando soluciones end to end que aceleran la innovación y la toma de decisiones.
Si buscas un partner para crear productos digitales con código sólido y orientado a negocio, descubre cómo abordamos proyectos de aplicaciones a medida y software a medida. Y si quieres añadir capacidades de visión por computador, NLP o asistentes inteligentes a tus procesos, conoce nuestra propuesta en inteligencia artificial e IA para empresas.