Я использую угловые 2 реактивные формы и сделал валидатор для даты рождения. Валидатор работает, но, оказывается, дата рождения поля делится на три новых поля: год, месяц, день. У всех есть свои валидаторы. Мой вопрос в том, как я могу изменить свой код, чтобы мой первоначальный валидатор рождения работал на трех полях.реактивные формы: используйте один валидатор для нескольких полей
мой оригинальный валидатор, который проверяет одно поле. входа (2000/12/12) действует
export function dobValidator(control) {
const val = control.value;
const dobPattern = /^\d{4}\/\d{2}\/\d{2}$/ ;
const comp = val.split('/');
const y = parseInt(comp[0], 10);
const m = parseInt(comp[1], 10);
const d = parseInt(comp[2], 10);
const jsMonth = m - 1;
const date = new Date(y, jsMonth, d);
const isStringValid = dobPattern.test(control.value);
const isDateValid = (date.getFullYear() === y && date.getMonth() === jsMonth && date.getDate() === d);
return (isStringValid && isDateValid) ? null : { invalidDob: ('Date of birth not valid') };
};
нового HTML с 3 полями года, имеет валидатор, который проверяет день года имеет валидатор, который проверяет, если вход между 1 и 31 месяца имеет валидатор, который проверяет, находится ли вход между 1 и 12. Я хочу объединить вышеуказанный ввод трех полей в новую строку и использовать мой первоначальный валидатор рождения.
<label>Date of birth :</label>
<div>
<div class="col-xs-1">
<input required type="text" formControlName="day" class="form-control" placeholder="dd" id="day"/>
<p *ngIf="form.controls.day.dirty && form.controls.day.errors">{{ form.controls.day.errors.invalidDay }}</p>
</div>
<div class="col-xs-1">
<input required type="text" formControlName="month" class="form-control" placeholder="mm" id="month"/>
<p *ngIf="form.controls.month.dirty && form.controls.month.errors">{{ form.controls.month.errors.invalidMonth }}</p>
</div>
<div class="col-xs-2">
<input required type="text" formControlName="year" class="form-control" placeholder="yyyy" id="year"/>
<p *ngIf="form.controls.year.dirty && form.controls.year.errors">{{ form.controls.year.errors.invalidYear }}</p>
</div>
</div>
<div>
<button type="submit" [disabled]="form.invalid">Submit</button>
</di>