Búsqueda de sitios web

javascript - ¿Cómo activar manualmente la validación de entrada en Angular 2?


Tengo dos entradas:

  • El primero sobre el que aplico mi validador personalizado
  • El segundo, qué valor uso en mi validador personalizado (es dinámico y editable)

Si aplico mi validador personalizado en el primer campo de entrada, luego enfoco el segundo y cambio el valor, quiero forzar la revalidación del primer campo de entrada...

Por el momento, solo vuelve a validar la primera entrada cuando cambio el valor... ¿Alguna sugerencia?

En el momento en que enfoco la primera entrada, puedo acceder a su referencia:

<input
    name="mEnd"
    class="form-control"
    [(ngModel)]="endDate"
       ...
    #endDateInput="ngModel"
    (focus)="clog(endDateInput)"
>

Me pregunto si puedo activar la revalidación usando los métodos de referencia del formControl de entrada.

Respuesta #1

Puedes actualizar la validez de un formControl

form.controls['myControl'].updateValueAndValidity();

Respuesta #2

Encontré esto mucho mejor

this.myForm.markAllAsTouched();

Respuesta #3

Si tienes un formulario basado en plantilla, puedes acceder al formulario a través del decorador ViewChild:

@ViewChild('myForm') public form: NgForm;

entonces, valida un campo o todo el grupo de formularios usando el método mencionado arriba:

this.form.controls.myControl.updateValueAndValidity();

Artículos relacionados