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 { Validators } from '@angular/forms'; |
||||
import { validateCreditCard } from './credit-card.validator'; |
import { validateCreditCard } from './credit-card.validator'; |
||||
|
import { validateRange } from './range.validator'; |
||||
import { validateRequired } from './required.validator'; |
import { validateRequired } from './required.validator'; |
||||
export * from './credit-card.validator'; |
export * from './credit-card.validator'; |
||||
|
export * from './range.validator'; |
||||
export * from './required.validator'; |
export * from './required.validator'; |
||||
|
|
||||
export const AbpValidators = { |
export const AbpValidators = { |
||||
creditCard: validateCreditCard, |
creditCard: validateCreditCard, |
||||
email: () => Validators.email, |
email: () => Validators.email, |
||||
|
range: validateRange, |
||||
required: validateRequired, |
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