Tiny, fast, and made for Angular Reactive Forms
- 🚀 Lightweight and dependency-free
- 🎯 Focused on Reactive Forms for Angular
- 🌍 Multilingual support (English, Spanish, Esperanto)
- 🧩 Built-in custom validators
- 💬 Customizable error messages and styling
- 📏 Configurable behaviors like
markFieldsAsDirty
andmaxLengthWarning
Installing NGX Forms Validator is as simple as running a single command in your Angular project:
npm i ngx-forms-validator
Once installed, you're ready to import the library and start validating forms — no additional setup or dependencies required.
Supports Angular 14 and above — fully compatible with the latest Angular versions.
import { TranslateService } from 'ngx-forms-validator';
constructor(private translateService: TranslateService) {
this.translateService.setTranslationLanguaje('en_US');
}
import { FormValidatorService } from 'ngx-forms-validator';
constructor(public formValidatorService: FormValidatorService) {}
ngOnInit(): void {
this.form = this.formBuilder.group({
name: ['', Validators.required]
});
this.formValidatorService.validateForm(this.form);
}
<form [formGroup]="form">
<div>
<input id="name" name="name" formControlName="name" />
</div>
</form>
this.formValidatorService.validateForm(this.form, {
markFieldsAsDirty: true,
showMaxLengthWarning: true
});
Create your own i18n literals and override the defaults:
export const customLiterals = {
required: 'This field is required',
email: 'Please enter a valid email'
};
this.translateService.setCustomTranslations(customLiterals);
Built-in support for:
- en_US (English)
- es_ES (Spanish)
- eo_EO (Esperanto)
Use custom ones included in the lib:
onlyNumber → key: number
hasWhiteSpaceLine → key: whiteSpaceLine
hasLeadingWhiteSpace → key: leadingWhiteSpaceLine
hasTrailingWhiteSpace → key: trailingWhiteSpaceLine
introducedValueExists → key: introducedValueNoExist
maxByte → key: maxLength
Or create your own easily:
export class CustomValidators {
public static noSpecialChars(control: AbstractControl): ValidationErrors | null {
return /[^a-zA-Z0-9]/.test(control.value) ? { noSpecialChars: true } : null;
}
}
Then add its literal key to your custom translations.
To use the default styling, include the stylesheet in your angular.json
:
"styles": [
"node_modules/ngx-forms-validator/styles/styles.scss"
]
You can override the styles using .ok-field
, .error-field
, .warning-field
, etc.
You can fine-tune how and when messages appear using:
markFieldsAsDirty
showMaxLengthWarning
Found a bug or want to contribute? Open an issue or PR!
MIT © apalacios.dev