javascript - Cum să declanșezi manual validarea unui input în Angular 2?


Am două intrări:

  • Primul pe care aplic validatorul meu personalizat
  • Al doilea pe care valoare îl folosesc în validatorul meu personalizat (este dinamic și editabil)

Dacă aplic validatorul meu personalizat pe primul câmp de introducere, apoi trec la al doilea și schimb valoarea - vreau să forțez revalidarea primului câmp...

În acest moment, revalidează doar prima intrare atunci când schimb valoarea... Aveți sugestii?

În momentul în care focalizez primul input, pot accesa referința sa:

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

Mă întreb dacă pot declanșa re-validarea folosind metodele de referință ale formControl din input.

Răspuns #1

Poți actualiza validitatea unui formControl

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

Răspunsul #2

Am considerat că acesta este mult mai bun

this.myForm.markAllAsTouched();

Răspunsul #3

Dacă aveți un formular bazat pe șablon, puteți accesa formularul prin decororul ViewChild:

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

apoi, validează un câmp sau întregul grup de formulare folosind metoda menționată mai sus:

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