Angular form validators for passwords, emails, universal constraints, and credit cards with reactive and template-driven form support
npx @tessl/cli install tessl/npm-ngx-validators@6.0.0Angular form validators library providing comprehensive validation rules for Angular 13+ applications. Supports both reactive forms (model-driven) and template-driven forms through validator functions and directives, with specialized validators for passwords, emails, universal constraints, and credit cards.
npm install ngx-validatorsimport {
PasswordValidators,
EmailValidators,
UniversalValidators,
CreditCardValidators,
EqualToValidator,
ValidatorsModule
} from "ngx-validators";For Angular module setup:
import { ValidatorsModule } from "ngx-validators";
@NgModule({
imports: [ValidatorsModule],
// ...
})
export class AppModule {}import { FormBuilder, FormGroup } from "@angular/forms";
import { PasswordValidators, EmailValidators } from "ngx-validators";
export class MyComponent {
myForm: FormGroup;
constructor(private fb: FormBuilder) {
this.myForm = this.fb.group({
email: ['', [EmailValidators.normal]],
password: ['', [
PasswordValidators.digitCharacterRule(1),
PasswordValidators.lowercaseCharacterRule(1),
PasswordValidators.uppercaseCharacterRule(1)
]],
confirmPassword: [''],
age: ['', [UniversalValidators.isNumber, UniversalValidators.min(18)]]
}, {
validators: [PasswordValidators.mismatchedPasswords('password', 'confirmPassword')]
});
}
}<form>
<input
name="email"
[(ngModel)]="user.email"
#email="ngModel"
emailValidator>
<input
name="password"
[(ngModel)]="user.password"
#password="ngModel"
[password]="true"
[digitCharacter]="1"
[lowercaseCharacter]="1"
[uppercaseCharacter]="1">
<input
name="age"
[(ngModel)]="user.age"
#age="ngModel"
isNumber
[min]="18">
</form>ngx-validators is built around several key components:
Comprehensive password strength validation including character requirements, repetition limits, and confirmation matching.
class PasswordValidators {
static repeatCharacterRegexRule(repeatCount: number): ValidatorFn;
static alphabeticalCharacterRule(amount: number): ValidatorFn;
static digitCharacterRule(amount: number): ValidatorFn;
static lowercaseCharacterRule(amount: number): ValidatorFn;
static uppercaseCharacterRule(amount: number): ValidatorFn;
static specialCharacterRule(amount: number): ValidatorFn;
static allowedCharacterRule(allowedChars: string[]): ValidatorFn;
static mismatchedPasswords(passwordControlName?: string, confirmPasswordControlName?: string): ValidatorFn;
}Email validation with HTML5 compliance and intelligent typo suggestion features for common email domains.
class EmailValidators {
static simple(control: AbstractControl): ValidationErrors | null;
static normal(control: AbstractControl): ValidationErrors | null;
static suggest(options?: EmailOptions): ValidatorFn;
}Common data validation rules for whitespace, numeric ranges, string lengths, dates, and data types.
class UniversalValidators {
static noWhitespace(control: AbstractControl): ValidationErrors | null;
static noEmptyString(control: AbstractControl): ValidationErrors | null;
static isNumber(control: AbstractControl): ValidationErrors | null;
static isInRange(minValue: number, maxValue: number): ValidatorFn;
static minLength(minLength: number): ValidatorFn;
static maxLength(maxLength: number): ValidatorFn;
static min(min: number): ValidatorFn;
static max(max: number): ValidatorFn;
static minDate(minDate: Date): ValidatorFn;
static maxDate(minDate: Date): ValidatorFn;
static type(type: "number" | "string" | "object" | "boolean"): ValidatorFn;
}Credit card format validation for major card types including Visa, MasterCard, American Express, and more.
class CreditCardValidators {
static isCreditCard(control: AbstractControl): ValidationErrors | null;
static americanExpress(control: AbstractControl): ValidationErrors | null;
static dinersclub(control: AbstractControl): ValidationErrors | null;
static discover(control: AbstractControl): ValidationErrors | null;
static jcb(control: AbstractControl): ValidationErrors | null;
static maestro(control: AbstractControl): ValidationErrors | null;
static mastercard(control: AbstractControl): ValidationErrors | null;
static visa(control: AbstractControl): ValidationErrors | null;
}Angular directives for using validators in template-driven forms with two-way data binding support.
@NgModule({
declarations: [/* all validator directives */],
exports: [/* all validator directives */]
})
export class ValidatorsModule {}Utility functions for form control manipulation and validation state management.
class AbstractControlUtil {
static isNotPresent(control: AbstractControl): boolean;
static addError(control: AbstractControl | null, errorId: string, value: any): void;
static removeError(control: AbstractControl | null, errorId: string): void;
}
class EqualToValidator {
static equalTo(c1Name: string, c2Name: string): ValidatorFn;
}Complete email processing utilities including suggestion algorithms and email parsing.
interface EmailOptions {
domains: string[];
secondLevelDomains: string[];
topLevelDomains: string[];
}
interface SplittedEmail {
topLevelDomain: string;
secondLevelDomain: string;
domain: string;
address: string;
}
interface Suggestion {
address: string;
domain: string;
full: string;
}
class EmailSuggestion {
suggest(email: string, options?: EmailOptions): { [key: string]: Suggestion } | null;
splitEmail(email: string): SplittedEmail | null;
}// Angular Forms types (external dependency)
interface AbstractControl {
value: any;
errors: ValidationErrors | null;
// ... other Angular AbstractControl properties
}
interface ValidationErrors {
[key: string]: any;
}
interface ValidatorFn {
(control: AbstractControl): ValidationErrors | null;
}
// Email validation types
interface EmailOptions {
domains: string[];
secondLevelDomains: string[];
topLevelDomains: string[];
}
interface Suggestion {
address: string;
domain: string;
full: string;
}
interface SplittedEmail {
topLevelDomain: string;
secondLevelDomain: string;
domain: string;
address: string;
}