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>