Вы можете сделать что-то похожее на то, что я сделал, чтобы убедиться, что «дата окончания» возникает после представления «дата начала». Я использую Angular Reactive Forms, поэтому создайте FormGroup, содержащую ваше более раннее и более позднее время. Очевидно, переведите этот метод с даты на время.
Этот блок кода ниже создает FormGroup с именем 'date' с помощью FormControls 'startDate' и 'endDate'. Должен быть в файле .ts.
date: this.fb.group({
startDate: ['', [Validators.required]],
endDate: ['', [Validators.required]],
}, {validator: this.endDateAfter}),
Вы можете получить к нему доступ в angular формах html, используя [formGroup]="date"
в элементе верхнего уровня <form>
и используя formControlName="startDate"
в своем вводе поле внутри формы.
Теперь, валидатор - это то место, где происходят маги c. Я создал validator.ts, где находится валидатор. Это логика c для валидатора.
export function EndDateAfterSelectedStartDate(group: FormGroup) {
const startDate = group.get('startDate').value;
const endDate = group.get('endDate').value;
if (endDate <= startDate) {
console.log('Invalid End Date');
}
return endDate > startDate ? null : { EndDateBeforeSelectedStartDate: true }
}
Обратите внимание, что валидатор экспортирован. Импортируйте его в свой файл .ts, используя нечто подобное:
import { EndDateAfterSelectedStartDate } from 'src/app/validators/CustomValidators';
Внутри вашего класса создайте переменную: endDateAfter = EndDateAfterSelectedStartDate;
, которая является переменной, используемой в валидаторе для элемента управления формы выше.
Вы можете сделать то же самое с объектами Time, я использовал встроенный объект Date для этого проекта.