Я пытаюсь добавить валидацию для элементов управления датой и датой в форме, управляемой шаблоном. Как я могу проверить их, например, «дата должна быть больше даты» и наоборот. Также я подумываю повторно использовать эту проверку в моем приложении для различных элементов управления датой и датой.

0
akhila nair 20 Авг 2018 в 12:34

3 ответа

Лучший ответ

Создайте функцию, которая принимает два элемента управления формы. Сравните даты и в случае ошибки установите ошибки элементов управления формы:

compareDates(from: FormControl, to: FormControl) {
  const startDate: Date = ConvertYourFormValueToValidDate(from.value);
  const endDate: Date = ConvertYourFormValueToValidDate(to.value);

  if (startDate.getTime() > endDate.getTime()) {
    from.setErrors({ ...from.errors, 'aboveEnd': true });
  } else if (startDate.getTime() > endDate.getTime()) {
    to.setErrors({ ...to.errors, 'belowStart': true });
  }
}
1
user4676340user4676340 20 Авг 2018 в 09:40

JS Date может быть по сравнению с использованием < и >

fromDate = new Date() // today
toDate = new Date(fromDate.valueOf() + 60*60*24) // tomorrow

function toDateIsLater(fromDate, toDate) {
  return toDate > fromDate
}

console.log(toDateIsLater(fromDate, toDate))
1
jonatjano 20 Авг 2018 в 09:40

Так что, если вы используете управляемые темпами формы, у вас есть ngModel на вашем вводе даты. Для проверки вы можете проверить значение вашей модели даты и проверить ее. Чтобы узнать, изменится ли ваша модель, вы можете использовать ngModelChange.

1
enno.void 20 Авг 2018 в 09:39
51927874