import {AbstractControl, ValidationErrors, ValidatorFn} from '@angular/forms'; export class BirthdayLimitValidator { static format(control: AbstractControl): ValidationErrors | null { const D1 = new Date(); D1.setFullYear(D1.getFullYear() - 100); const D2 = new Date(); D2.setFullYear(D2.getFullYear() - 18); const D3 = new Date(control.value); if (D3.getTime() <= D2.getTime() && D3.getTime() >= D1.getTime()) { return null; } else { const dateMin = BirthdayLimitValidator.formatedNumber(D1.getDate()) + '/' + BirthdayLimitValidator.formatedNumber(D1.getMonth() + 1) + '/' + D1.getFullYear(); const dateMax = BirthdayLimitValidator.formatedNumber(D2.getDate()) + '/' + BirthdayLimitValidator.formatedNumber(D2.getMonth() + 1) + '/' + D2.getFullYear(); return { validation: { message: (error, field) => { return `La date doit ĂȘtre comprise entre le \"${dateMin}\" et le \"${dateMax}\"`; } } }; } } static formatedNumber(date: any): string { return date < 10 ? '0' + date : date; } }