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();
