Angular Bootstrap inputs validation
Validation is very important, which is why we have prepared a number of validators at MDB, both Angular default validators and our own.
Reactive Forms - Angular default validators
For using Reactive Forms Validators it's needed to import:
To app.module.ts file add
import { ReactiveFormsModule } from '@angular/forms';
To app.component.ts file add
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
minLength Validator
minLength validation attribute is set to 3.
<form [formGroup]="validatingForm">
<div class="md-form">
<input type="text" id="form2" class="form-control" data-error="wrong text" data-success="right text" formControlName="minlength">
<label mdbInputDirective for="form2">minLength validator</label>
<div *ngIf="validatingForm.controls['minlength'].touched">
<div class="alert alert-danger" *ngIf="validatingForm.controls['minlength'].errors?.minlength">Custom Error</div>
</div>
</div>
</form>
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
import { Component } from '@angular/core';
@Component({
selector: 'validators-component-example',
templateUrl: 'validators-example.html',
})
export class ValidatorsComponent {
validatingForm: FormGroup;
constructor(private fb: FormBuilder) {
this.validatingForm = fb.group({
'minlength': [null, Validators.minLength(3)],
});
}
}
maxLength Validator
maxLength validation attribute is set to 5.
<form [formGroup]="validatingForm">
<div class="md-form">
<input type="text" id="form3" class="form-control" data-error="wrong text" data-success="right text" formControlName="maxlength">
<label mdbInputDirective for="form3">maxLength validator</label>
<div *ngIf="validatingForm.controls['maxlength'].touched">
<div class="alert alert-danger" *ngIf="validatingForm.controls['maxlength'].errors?.maxlength">Custom Error</div>
</div>
</div>
</form>
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
import { Component } from '@angular/core';
@Component({
selector: 'validators-component-example',
templateUrl: 'validators-example.html',
})
export class ValidatorsComponent {
validatingForm: FormGroup;
constructor(private fb: FormBuilder) {
this.validatingForm = fb.group({
'maxlength': [null, Validators.maxLength(5)],
});
}
}
Min value Validator
Min value is set to 10.
<form [formGroup]="validatingForm">
<div class="md-form">
<input type="number" id="form4" class="form-control" data-error="wrong number" data-success="right number" formControlName="min">
<label mdbInputDirective for="form4">min value validator</label>
<div *ngIf="validatingForm.controls['min'].touched">
<div class="alert alert-danger" *ngIf="validatingForm.controls['min'].errors?.min">Custom Error</div>
</div>
</div>
</form>
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
import { Component } from '@angular/core';
@Component({
selector: 'validators-component-example',
templateUrl: 'validators-example.html',
})
export class ValidatorsComponent {
validatingForm: FormGroup;
constructor(private fb: FormBuilder) {
this.validatingForm = fb.group({
'min': [null, Validators.min(10)],
});
}
}
Max value Validator
Max value is set to 10.
<form [formGroup]="validatingForm">
<div class="md-form">
<input type="number" id="form5" class="form-control" data-error="wrong number" data-success="right number" formControlName="max">
<label mdbInputDirective for="form5">max value validator</label>
<div *ngIf="validatingForm.controls['max'].touched">
<div class="alert alert-danger" *ngIf="validatingForm.controls['max'].errors?.max">Custom Error</div>
</div>
</div>
</form>
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
import { Component } from '@angular/core';
@Component({
selector: 'validators-component-example',
templateUrl: 'validators-example.html',
})
export class ValidatorsComponent {
validatingForm: FormGroup;
constructor(private fb: FormBuilder) {
this.validatingForm = fb.group({
'max': [null, Validators.max(10)],
});
}
}
Email Validator
<form [formGroup]="validatingForm">
<div class="md-form">
<input type="email" id="form6" class="form-control" data-error="wrong email" data-success="right email" formControlName="email">
<label mdbInputDirective for="form6">max value validator</label>
<div *ngIf="validatingForm.controls['email'].touched">
<div class="alert alert-danger" *ngIf="validatingForm.controls['email'].errors?.email">Custom Error</div>
</div>
</div>
</form>
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
import { Component } from '@angular/core';
@Component({
selector: 'validators-component-example',
templateUrl: 'validators-example.html',
})
export class ValidatorsComponent {
validatingForm: FormGroup;
constructor(private fb: FormBuilder) {
this.validatingForm = fb.group({
'email': [null, Validators.email],
});
}
}
Pattern Validator
Pattern Validator should contains RegEx. With it, pattern is able to validate through regular expressions. In this example, RegEx allows to put only english letters into input.
<form [formGroup]="validatingForm">
<div class="md-form">
<input type="text" id="form7" class="form-control" data-error="wrong text" data-success="right text" formControlName="pattern">
<label mdbInputDirective for="form7">only letters (pattern) validator</label>
<div *ngIf="validatingForm.controls['pattern'].touched">
<div class="alert alert-danger" *ngIf="validatingForm.controls['pattern'].errors?.pattern">Custom Error</div>
</div>
</div>
</form>
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
import { Component } from '@angular/core';
@Component({
selector: 'validators-component-example',
templateUrl: 'validators-example.html',
})
export class ValidatorsComponent {
validatingForm: FormGroup;
constructor(private fb: FormBuilder) {
this.validatingForm = fb.group({
pattern': [null, Validators.pattern(/A-Za-z/)],
});
}
}
Required Validator
<form [formGroup]="validatingForm">
<div class="md-form">
<input mdbInputDirective type="text" id="form1" class="form-control" data-error="Something went wrong..." data-success="Everything is okay!" formControlName="required">
<label for="form1">Required validator</label>
<div *ngIf="validatingForm.controls['required'].touched">
<div class="alert alert-danger" *ngIf="validatingForm.controls['required'].errors?.required">Custom Error</div>
</div>
</div>
</form>
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
import { Component } from '@angular/core';
@Component({
selector: 'validators-component-example',
templateUrl: 'validators-example.html',
})
export class ValidatorsComponent {
validatingForm: FormGroup;
constructor(private fb: FormBuilder) {
this.validatingForm = fb.group({
'required': [null, Validators.required],
});
}
}
MDB default validatons
In MDB we're providing few basic validation functions ready to use by users.
For use MDB default validations, add
mdbInputDirective
directive to each input field, which is to be validated.
Email validation
<form>
<div class="md-form">
<input type="email" id="form8" class="form-control" data-error="wrong email" data-success="right email" mdbInputDirective>
<label for="form8">MDB email validation</label>
</div>
</form>
Password validation
<form>
<div class="md-form">
<input type="password" id="form9" class="form-control" data-error="wrong password" data-success="right password" mdbInputDirective>
<label for="form9">MDB password validation</label>
</div>
</form>
Text validation
<form>
<div class="md-form">
<input type="text" id="form10" class="form-control" data-error="wrong text" data-success="right text" mdbInputDirective>
<label for="form10">MDB text validation</label>
</div>
</form>
MDB telephone number validation
<form>
<div class="md-form">
<input type="tel" id="form11" class="form-control" data-error="wrong tel" data-success="right tel" mdbInputDirective>
<label for="form11">MDB telephone number validate</label>
</div>
</form>
MDB number validation
<form>
<div class="md-form">
<input type="number" id="form12" class="form-control" data-error="wrong number" data-success="right number" mdbInputDirective>
<label for="form12">MDB telephone number validate</label>
</div>
</form>
Submit validation
Submit validation works only, when
<input type="submit">
is placed between
<form></form>
tags.
Submit validation marks every input, which is filled incorretly.
<form>
<div class="md-form">
<input type="password" id="form13" class="form-control" data-error="wrong password" data-success="right password" mdbInputDirective>
<label for="form13">MDB password validate</label>
</div>
<div class="md-form">
<input type="email" id="form14" class="form-control" data-error="wrong mail" data-success="right mail" mdbInputDirective>
<label for="form14">MDB email validate</label>
</div>
<div class="md-form">
<input type="number" id="form15" class="form-control" data-error="wrong number" data-success="right number" mdbInputDirective>
<label for="form15">MDB number validate</label>
</div>
<div class="md-form">
<input type="tel" id="form16" class="form-control" data-error="wrong telephone number" data-success="right telephone number" mdbInputDirective>
<label for="form16">MDB telephone number validate</label>
</div>
<input type="submit" class="btn btn-primary" value="submit" mdbInputDirective>
</form>
MDB custom RegEx validatons
For advanced validations, we've prepared
customRegex
input, which allows users to place their custom RegEx without editing MDB source files.
<form>
<div class="md-form">
<input type="text" id="form17" class="form-control" customRegex="^[a-zA-Z0-9]+$" data-error="wrong text" data-success="right text" mdbInputDirective>
<label for="form17">Custom RegEx validation</label>
</div>
</form>