Вы можете использовать FormsModule, ReactiveFormsModule
в своем приложении для этого.
Пожалуйста, следуйте инструкциям.
Импорт FormsModule, ReactiveFormsModule
в файл module.ts.
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { emailRegexp, passwordRegexp } from '../../constants'; // if you have any email regex for validation otherwise remove it.
Добавить в @NgModule:
@NgModule({
imports: [
BrowserModule,
ReactiveFormsModule
],
declarations: [
AppComponent
],
})
export class AppModule {
}
Теперь перейдите к компоненту, где ваша форма нуждается в валидации:
import { FormBuilder, FormGroup, Validators, NgForm } from '@angular/forms';
Инициализация в вашем конструкторе:
constructor(
private formBuilder: FormBuilder,
) { }
Создайте валидатор вашей формы: (Я использую для входа в систему):
// login form validations
this.loginForm = this.formBuilder.group({
email: ['', Validators.compose([Validators.required)])], // If you don't have any email regex. otherwise write this=> email: ['', Validators.compose([Validators.required, Validators.pattern(emailRegexp)])],
password: ['', Validators.compose([Validators.required, Validators.minLength(8)])]
});
}
Теперь создайте свою форму (в HTML) следующим образом:
<form [formGroup]="loginForm" (ngSubmit)="loginForm.valid && login()" novalidate>
<div *ngIf="loginError" class="form-group">
<div class="">
<p class="loginError">Incorrect Email/Password </p>
</div>
<input type="email" formControlName="email">
<p *ngIf="loginForm.controls.email.touched && loginForm.controls.email.errors && loginForm.controls.email.errors.pattern"
class="error-message">
Invalid Email </p>
<p *ngIf=" loginForm.controls.email.touched && loginForm.controls.email.errors && loginForm.controls.email.errors.required && !loginForm.controls.email.errors.pattern"
class="error-message">
Email is required </p>
</div>
<div class="form-group row">
<div class="col-12">
<input autocomplete="off" type="password" (focus)="focusFunction()" placeholder="Password" formControlName="password" class="form-control">
</div>
<div *ngIf="loginForm.controls.password.touched">
<p *ngIf="loginForm.controls.password.errors && loginForm.controls.password.errors.required " class="error-message">Password is required </p>
<p *ngIf=" loginForm.controls.password.errors && loginForm.controls.password.errors.minlength" class="error-message"> Min. 8 characters required.</p>
</div>
</div>
<div class="form-group row">
<div class="col-12">
<button [disabled]="!loginForm.valid" type="submit" >
<div class="sign-in">Sign in</div>
</button>
</div>
</div>
</form>