Мне нужно написать собственный валидатор для формы Angular, управляемой шаблоном, где достаточно одного непустого ввода, чтобы сделать форму действительной.
Рассмотрим следующую форму Angular с два поля ввода и кнопка отправки:
<form name="myform" (ngSubmit)="userForm.form.valid && saveData()" #userForm="ngForm" novalidate>
<input type="text"
[(ngModel)]="phoneNumber"
name="phoneNumber"
#phoneNumber="ngModel"
pattern="\+[1-8]{1-3}\([0-9]{3}\)[0-9]{7}" />
<input type="text"
[(ngModel)]="privateEMail"
name="privateEMail"
#privateEMail="ngModel"
pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$" />
<button type="submit" [disabled]="!userForm.form.valid">Submit</button>
</form>
Требование - сделать форму действительной (дополнительно к проверке шаблона входов), если один из обоих входов должен быть не пустым. Писать пользовательский валидатор для элементов управления вводом не имеет смысла - он будет ограничен только областью его собственных значений. Для подписки на событие формы statusChanges
приносит также отметить - эта информация только для чтения. Когда написать пользовательский валидатор элемента управления (например, для элемента управления вводом) и применить его к форме, он не будет работать - он, кажется, не будет вызываться формой.
Как правильно написать пользовательский валидатор для формы Angular на основе шаблона?