ngx-age-validator
Version:
angular custom validator to validate a given age using momentjs
20 lines • 2.56 kB
JavaScript
import * as moment from 'moment';
export function NgxAgeValidator(min, max) {
return (control) => {
const birthday = control.value;
// console.log("birthday", birthday);
if (birthday !== undefined) {
const years = moment().diff(birthday, 'years');
// console.log("years", years);
if (min && min > years) {
return { 'tooJung': true };
}
if (max && max < years) {
return { 'tooOld': true };
}
return null;
}
return { 'ageValidation': true };
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWFnZS12YWxpZGF0b3Ivc3JjL2xpYi92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFakMsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFZLEVBQUUsR0FBWTtJQUN4RCxPQUFPLENBQUMsT0FBd0IsRUFBcUMsRUFBRTtRQUNyRSxNQUFNLFFBQVEsR0FBUyxPQUFPLENBQUMsS0FBYSxDQUFDO1FBQzdDLHFDQUFxQztRQUNyQyxJQUFJLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDMUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUMvQywrQkFBK0I7WUFDL0IsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRTtnQkFDdEIsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQTthQUN6QjtZQUNELElBQUksR0FBRyxJQUFJLEdBQUcsR0FBRyxLQUFLLEVBQUU7Z0JBQ3RCLE9BQU8sRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUE7YUFDeEI7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxFQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gTmd4QWdlVmFsaWRhdG9yKG1pbj86IG51bWJlciwgbWF4PzogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9IHwgbnVsbCA9PiB7XG4gICAgY29uc3QgYmlydGhkYXk6IERhdGUgPSBjb250cm9sLnZhbHVlIGFzIERhdGU7XG4gICAgLy8gY29uc29sZS5sb2coXCJiaXJ0aGRheVwiLCBiaXJ0aGRheSk7XG4gICAgaWYgKGJpcnRoZGF5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHllYXJzID0gbW9tZW50KCkuZGlmZihiaXJ0aGRheSwgJ3llYXJzJyk7XG4gICAgICAvLyBjb25zb2xlLmxvZyhcInllYXJzXCIsIHllYXJzKTtcbiAgICAgIGlmIChtaW4gJiYgbWluID4geWVhcnMpIHtcbiAgICAgICAgcmV0dXJuIHsndG9vSnVuZyc6IHRydWV9XG4gICAgICB9XG4gICAgICBpZiAobWF4ICYmIG1heCA8IHllYXJzKSB7XG4gICAgICAgIHJldHVybiB7J3Rvb09sZCc6IHRydWV9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHsnYWdlVmFsaWRhdGlvbic6IHRydWV9O1xuICB9O1xufVxuIl19