Custom Validation

ValidatorFn

Validator Function

In complex application put this file into separate folder for example:

src/app/common/validators/username.validators.ts

Can not contain space

username.validators.ts
import { AbstractControl, ValidationErrors } from "@angular/forms";

export class UserNameValidators{
    static cannotContainSpace(control: AbstractControl): ValidationErrors | null {
        if((control.value as string).indexOf(' ') >= 0)
            return { cannotContainSpace: true }
        
        return null;
    }
}
<form [formGroup]="form">
    <div class="form-group">
        <label for="username">Username</label>
        <input 
        formControlName="username"
            id="username" 
            type="text" 
            class="form-control form-control-lg">
            <div *ngIf="username.touched && username.invalid" 
                 class="alert alert-danger">
                    <div *ngIf="username.errors.required">Username is required</div>
                    <div *ngIf="username.errors.minlength">
                        Username should be minimum  
                            {{ username.errors.minlength.requiredLength }}     
                        charatcers
                    </div>
                    <div *ngIf="username.errors.maxlength">
                        Username should be maximum  
                            {{ username.errors.maxlength.requiredLength }}     
                        charatcers
                    </div>
                    <div *ngIf="username.errors.cannotContainSpace">
                        Username can not contain space
                    </div>
            </div>
    </div>
    <div class="form-group">
        <label for="password">Password</label>
        <input 
        formControlName="password"
            id="password" 
            type="text" 
            class="form-control form-control-lg">
    </div>
    <button class="btn btn-dark btn-lg" type="submit">
        Sign Up
    </button>
</form>
Was this page helpful?