Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

83
Vistas
Angular2 obtiene validadores existentes de un control de formulario

Digamos

 surname = new FormControl('', [Validators.required, Validators.minLength(2)]);

En algún momento, dependiendo de la situación, puedo agregar o eliminar validadores en el control de apellidos.

Al final ¿Cómo sé qué validadores existen en el control de apellidos? No pude encontrar nada en la documentación ni volcando el control en la consola.

Algo como

 surname.getValidators() should return - ['required', 'minLength']
about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Actualmente no se admite la lectura de validadores de un control

Ver también https://github.com/angular/angular/issues/13461

about 4 years ago · Santiago Trujillo Denunciar

0

Puede mostrar mensajes de error como este:

 onValueChanged(data?: any) { if (!this.heroForm) { return; } const form = this.heroForm; for (const field in this.formErrors) { // clear previous error message (if any) this.formErrors[field] = ''; const control = form.get(field); if (control && control.dirty && !control.valid) { const messages = this.validationMessages[field]; for (const key in control.errors) { this.formErrors[field] += messages[key] + ' '; } } } } formErrors = { 'name': '', 'power': '' }; validationMessages = { 'name': { 'required': 'Name is required.', 'minlength': 'Name must be at least 4 characters long.', 'maxlength': 'Name cannot be more than 24 characters long.', 'forbiddenName': 'Someone named "Bob" cannot be a hero.' }, 'power': { 'required': 'Power is required.' } };

Consulte: https://angular.io/docs/ts/latest/cookbook/form-validation.html#!#reactive-component-template

about 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de Günter Zöchbauer sigue siendo correcta en Angular 6, pero hay una solución que funciona bien para mí.

Mi solución depende de dos observaciones:

Primero, puede ver qué validaciones están fallando actualmente, mirando las claves en el objeto de errors . Entonces, si tiene especificados Validators.required y Validators.minLength , el objeto de errores se vería así:

 { required: true, minlenght: { ... } }

Eso es lo suficientemente bueno para muchos casos de uso, cuando realmente no le importa si existe un validador pero no impide el envío de formularios.

En segundo lugar, resulta que Angular creará validadores para que coincidan con los atributos establecidos en su entrada. Entonces, para los validadores estándar, mi sugerencia sería no especificar el validador en absoluto .

Haz algo como esto en su lugar:

 <input type="text" formControlName="surname" [required]="surnameRequired">

En su formulario de declaración:

 form = this.formBuilder.group({ surname: '', anotherField: ['', Validators.required], yetAnotherField: ['', Validators.required] });

Y luego establezca el valor de surnameRequired para agregar o eliminar el validador.

Tengo un StackBlitz en funcionamiento .

Mi enfoque no funciona para validadores personalizados, pero la mayor parte de mis casos de uso no los usan. Su experiencia puede ser diferente.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda