import {Component, OnInit} from '@angular/core'; import {FormBuilder, FormControl, FormGroup, FormGroupDirective, NgForm, Validators} from '@angular/forms'; import {ErrorStateMatcher} from '@angular/material/core'; /** Error when invalid control is dirty, touched, or submitted. */ export class MyErrorStateMatcher implements ErrorStateMatcher { isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean { const isSubmitted = form && form.submitted; return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted)); } } @Component({ selector: 'app-sp-email', templateUrl: './email.component.html', styleUrls: ['./email.component.scss'] }) export class SettingPageEmailComponent implements OnInit { emailFormControl = new FormControl('', [ Validators.required, Validators.email, ]); matcher = new MyErrorStateMatcher(); hide = true; options: FormGroup; constructor(fb: FormBuilder) { this.options = fb.group({ hideRequired: false, floatLabel: 'auto', }); } ngOnInit() { } }