Angular supports of custom validators. Here i have created custom validator to validate date for template drive forms.
Directive: date-validator.directive.ts
Directive: date-validator.directive.ts
import { AbstractControl, ValidatorFn, FormControl } from '@angular/forms';
import * as moment from 'moment';
import { NG_VALIDATORS, Validator } from '@angular/forms';
import { Directive } from '@angular/core';
//
validation function
function validateDateFactory(): ValidatorFn {
return (c: AbstractControl) => {
let isValid = moment(c.value,
'M/D/YYYY', true).isValid();
if (isValid) {
return null;
} else {
return {
validDate: {
valid: false
}
};
}
}
}
@Directive({
selector: '[validDate][ngModel]',
providers: [
{ provide: NG_VALIDATORS, useExisting:
ValidDateValidator, multi: true }
]
})
export class ValidDateValidator implements Validator {
validator: ValidatorFn;
constructor() {
this.validator = validateDateFactory();
}
validate(c: FormControl) {
return this.validator(c);
}
}
Html:
<input type="text" [(ngModel)]="someDateModal" validDate />