javascript - Hur man triggar Angular 2 inputvalidering manuellt?


Jag har två inmatningar:

  • Först den på vilken jag tillämpar min anpassade validator
  • Den andra, vilket värde använder jag i min anpassade validator (det är dynamiskt och redigerbart)

Om jag tillämpar min anpassade validator på den första inmatningen, och sedan fokuserar på den andra och ändrar värdet - vill jag tvinga den första inmatningens omvalidering...

För tillfället validerar den bara om det första inmatningsfältet när jag ändrar värdet... Några förslag?

I det ögonblick jag fokuserar på den första inmatningen kan jag komma åt dess referens:

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

Jag undrar om jag kan trigga omvalidering med hjälp av inputformulärets formControl-referensmetoder?

Svar #1

Du kan uppdatera giltigheten för en formControl

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

Svar #2

Jag tyckte att detta var mycket bättre

this.myForm.markAllAsTouched();

Svar #3

Om du har ett formulär som drivs av en mall kan du komma åt formuläret genom ViewChild-dekoratorn:

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

validera sedan ett fält eller hela formulärgruppen med metoden som nämns ovan:

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

Relaterade artiklar