Angular шаблонная проверка формы - PullRequest
0 голосов
/ 01 мая 2020

Мне нужно написать собственный валидатор для формы 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 на основе шаблона?

...