mirror of https://github.com/abpframework/abp.git
3 changed files with 70 additions and 0 deletions
@ -1,11 +1,14 @@ |
|||
import { Validators } from '@angular/forms'; |
|||
import { validateCreditCard } from './credit-card.validator'; |
|||
import { validateRange } from './range.validator'; |
|||
import { validateRequired } from './required.validator'; |
|||
export * from './credit-card.validator'; |
|||
export * from './range.validator'; |
|||
export * from './required.validator'; |
|||
|
|||
export const AbpValidators = { |
|||
creditCard: validateCreditCard, |
|||
email: () => Validators.email, |
|||
range: validateRange, |
|||
required: validateRequired, |
|||
}; |
|||
|
|||
@ -0,0 +1,30 @@ |
|||
import { AbstractControl, ValidatorFn } from '@angular/forms'; |
|||
|
|||
export interface RangeError { |
|||
max: number; |
|||
min: number; |
|||
} |
|||
|
|||
export interface RangeOptions { |
|||
maximum?: number; |
|||
minimum?: number; |
|||
} |
|||
|
|||
export function validateRange({ maximum = Infinity, minimum = 0 }: RangeOptions = {}): ValidatorFn { |
|||
return (control: AbstractControl): RangeError | null => { |
|||
if (control.pristine) return null; |
|||
|
|||
if (['', null, undefined].indexOf(control.value) > -1) return { min: minimum, max: maximum }; |
|||
|
|||
const value = Number(control.value); |
|||
return getMinError(value, minimum, maximum) || getMaxError(value, maximum, minimum); |
|||
}; |
|||
} |
|||
|
|||
function getMaxError(value: number, max: number, min: number): RangeError { |
|||
return value > max ? { max, min } : null; |
|||
} |
|||
|
|||
function getMinError(value: number, min: number, max: number): RangeError { |
|||
return value < min ? { min, max } : null; |
|||
} |
|||
Loading…
Reference in new issue