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