mirror of https://github.com/abpframework/abp.git
3 changed files with 74 additions and 0 deletions
@ -0,0 +1,34 @@ |
|||||
|
import { AbstractControl, ValidatorFn } from '@angular/forms'; |
||||
|
|
||||
|
export interface StringLengthError { |
||||
|
maxlength?: number; |
||||
|
minlength?: number; |
||||
|
} |
||||
|
|
||||
|
export interface StringLengthOptions { |
||||
|
maximumLength?: number; |
||||
|
minimumLength?: number; |
||||
|
} |
||||
|
|
||||
|
export function validateStringLength({ |
||||
|
maximumLength = Infinity, |
||||
|
minimumLength = 0, |
||||
|
}: StringLengthOptions = {}): ValidatorFn { |
||||
|
return (control: AbstractControl): StringLengthError | null => { |
||||
|
if (control.pristine) return null; |
||||
|
|
||||
|
if (!control.value && minimumLength) return { minlength: minimumLength }; |
||||
|
|
||||
|
const value = String(control.value); |
||||
|
|
||||
|
return getMinLengthError(value, minimumLength) || getMaxLengthError(value, maximumLength); |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
function getMaxLengthError(value: string, maxlength: number): StringLengthError { |
||||
|
return value.length > maxlength ? { maxlength } : null; |
||||
|
} |
||||
|
|
||||
|
function getMinLengthError(value: string, minlength: number): StringLengthError { |
||||
|
return value.length < minlength ? { minlength } : null; |
||||
|
} |
||||
Loading…
Reference in new issue