First we need to add angular material to the project
ng add @angular/material
Create a module to handle all material imports and exports
ng g m material
Now follow the code below :
material.module.ts
import { NgModule } from '@angular/core'; import { MatButtonModule, MatInputModule, MatSelectModule, MatCheckboxModule, MatChipsModule} from '@angular/material'; const MaterialComponent = [ MatButtonModule, MatInputModule, MatSelectModule, MatCheckboxModule, MatChipsModule ]; @NgModule({ imports: [ MaterialComponent ], exports: [ MaterialComponent ] }) export class MaterialModule { }
app.module.ts
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponet } from './app.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MaterialModule } from './material/material.module'; import { ReactiveFormsModule } from '@angular/forms'; @NgModule({ declarations: [ AppComponet ], imports: [ BrowserModule, BrowserAnimationsModule, MaterialModule, ReactiveFormsModule ], providers: [], bootstrap: [AppComponet] }) export class AppModule { }
app.component.ts
import { Component, OnInit } from '@angular/core'; import { FormGroup, FormBuilder, Validators } from '@angular/forms'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponet implements OnInit { myForm: FormGroup; success = false; constructor(private fb: FormBuilder){ } ngOnInit(): void { this.myForm = this.fb.group({ email: ['', [ Validators.required, Validators.email ]], message: ['', [ Validators.required, Validators.minLength(5), Validators.pattern('[a-zA-Z]+') ]], age: ['', [ Validators.required, Validators.minLength(2), //Minimum lengh of String is 2 Validators.min(18), Validators.max(65) ]] /* agree: [false, [ Validators.requiredTrue ]] */ }); this.myForm.valueChanges.subscribe(console.log); } get email() { return this.myForm.get('email'); } get message() { return this.myForm.get('message'); } get age() { return this.myForm.get('age'); } submitForm(){ this.success=true; } }
app.component.html
<form [formGroup]="myForm" [hidden]="success" (ngSubmit)="submitForm()"> Value: {{myForm.value | json}} <hr/> <mat-form-field> <input matInput placeholder="Email Id" formControlName="email"/> <mat-error *ngIf="email.invalid && email.touched"> Email id is inValid </mat-error> </mat-form-field> <mat-form-field> <input matInput placeholder="Message" formControlName="message"/> <mat-error *ngIf="message.touched && message.errors?.minlength"> Minimum Length if 5 </mat-error> <mat-error *ngIf="message.touched && message.errors?.pattern"> Invalid Pattern </mat-error> <mat-hint align="end">Must have one characters only</mat-hint> </mat-form-field> <mat-form-field> <input matInput formControlName="age" placeholder="Age"/> <mat-hint align="end">Enter your age</mat-hint> <mat-error *ngIf="age.touched && age.errors?.required"> This field is madatory </mat-error> <mat-error *ngIf="age.touched && age.errors?.min"> {{age.errors.min.actual}} you are too young to use this app kiddo! </mat-error> <mat-error *ngIf="age.touched && age.errors?.max"> {{age.errors.max.actual}} you are too old to use this app gramps! </mat-error> </mat-form-field><br/> <button type="submit" mat-raised-button [disabled]="myForm.invalid">Submit</button> </form> <div *ngIf="success" class="notification is-success"> Yay! We received your submission </div>
Output :