Мне нужно проверить дату контроля рождаемости реактивной формы, поэтому, если пользователь выбрал значение из будущего, чтобы отключить кнопку сохранения:
import { AbstractControl } from '@angular/forms';
export function validateDOB(control: AbstractControl)
{
let currentDateTime = new Date();
let monthValue = currentDateTime.getMonth()+1;
let formattedDate = currentDateTime.getFullYear() +'-'+ monthValue +'-'+currentDateTime.getDay();
let controlValue = control.value;
let monthOfControlValue = controlValue.getMonth()+1;
let FinalControlValue = controlValue.getFullYear()+'-'+monthOfControlValue+'-'+controlValue.getDay;
console.log(FinalControlValue)
if(formattedDate<control.value)
{
return {response: true};
}
return null;
}
Объяснение:
Я работаю со сборщиком угловых материалов, поэтому дата будет отображаться следующим образом:
Пн. 01 октября 2018 00:00:00 GMT + 0300 (Восточноевропейское летнее время)
первые 3 строки получают текущую дату и преобразуют ее в формат YYYY-mm-dd
:
let currentDateTime = new Date();
let monthValue = currentDateTime.getMonth()+1;
let formattedDate = currentDateTime.getFullYear() +'-'+
monthValue +'-'+currentDateTime.getDay();
Последние 3 строки преобразуют дату, выбранную пользователем:
let monthOfControlValue = controlValue.getMonth()+1;
let FinalControlValue = controlValue.getFullYear()+'-'+monthOfControlValue+'-'+controlValue.getDay;
console.log(FinalControlValue )
На пользовательской стороне любая дата, независимо от того, была она меньше или больше, проверка не будет работать.
Я пытался провести сравнение без преобразования в YYYY-mm-dd
, но это не помогло.'t / не будет работать.
Я изменил сценарий, изменив значение элемента управления на новую дату:
let controlValue = new Date(control.value);
И сценарий теперь выглядит так:
import { AbstractControl } from '@angular/forms';
export function validateDOB(control: AbstractControl)
{
let currentDateTime = new Date();
let monthValue = currentDateTime.getMonth()+1;
let formattedDate = currentDateTime.getFullYear() +'-'+ monthValue +'-'+currentDateTime.getDay();
console.log(formattedDate)
let controlValue = new Date(control.value);
let monthOfControlValue = controlValue.getMonth()+1;
let FinalControlValue = controlValue.getFullYear()+'-'+monthOfControlValue+'-'+controlValue.getDay();
console.log(FinalControlValue)
if(formattedDate<control.value)
{
return {response: true};
}
return null;
}
И все еще не работает.