In this article, I will show you how to setup form validation in Angular 6. Also, I am
using a simple registration form with standard fields –
1.
Name
2.
Email
3.
Gender
4.
Country
5.
Site URL
6.
Password
All fields are required, plus the email field must be a
valid email address, site URL field must be a valid URL and the password field
must have a min-length of 6.
Steps involved as following –
1.
Create a project with the help of CLI command
– ng g new Project_Name
2.
Go to the created project directory
3.
Create customer components with the help of
CLI command – ng g component comp_name
4.
Import the FormsModule, RouterModule,
CustomerComponent, routing for navigating add customer page in the NgModule.
5.
Finally come to app.module.ts
6.
Result
The following Examples as–
Create a project
ng g
new ng6FormValidation
Create customer components –
customer.component.ts –
import
{ Component, OnInit
} from '@angular/core';
@Component({
selector: 'app-customer',
templateUrl: './customer.component.html',
styleUrls: ['./customer.component.css']
})
export
class CustomerComponent
implements OnInit
{
model: any
= {};
countries : any;
constructor() {
}
ngOnInit() {
//Get country list.
this.countries
=[
{"id" :1,
"name":
"India",
"code":"IN"},
{"id" :2,
"name":
"Nepal",
"code":"NP"},
{"id" :3,
"name":
"United Arab Emirates",
"code":
"AE"},
{"id" :4,
"name":
"United Kingdom",
"code":
"GB"},
{"id" :5,
"name":
"United States",
"code":
"US"},
{"id" :6,
"name":
"Australia",
"code":
"AU"},
{"id" :7,
"name":
"Austria",
"code":
"AT"},
{"id" :8,
"name":
"Canada",
"code":
"CA"},
{"id" :9,
"name":
"China",
"code":
"CN"},
];
//Default
selected country Id.
//this.model.country = 5;
}
public onSubmitCustomer()
{
alert('Your
information has been submitted successfully. :-)\n\n'
+ JSON.stringify(this.model))
}
}
And customer.component.html –
<h1>Register
Customer</h1>
<hr>
<form
name="form"
(ngSubmit)="f.form.valid
&&
onSubmitCustomer()" #f="ngForm"
novalidate>
<div
class="container">
<label
for="name"><b>Emp
Name</b></label>
<input
type="text"
placeholder="Enter
Name" name="name"
[(ngModel)]="model.name"
#name="ngModel"
[ngClass]="{
'is-invalid': f.submitted &&
name.invalid }" required>
<div
*ngIf="f.submitted
&& name.invalid"
class="invalid-text">
<div
*ngIf="name.errors.required">Name
is required</div>
</div>
<label
for="email"><b>Email</b></label>
<input
type="text"
placeholder="Enter
Email" name="email"
[(ngModel)]="model.email"
#email="ngModel"
[ngClass]="{
'is-invalid': f.submitted &&
email.invalid }" required
email>
<div
*ngIf="f.submitted
&&
email.invalid" class="invalid-text">
<div
*ngIf="email.errors.required">Email
is required</div>
<div
*ngIf="email.errors.email">Email
must be a valid email address</div>
</div>
<label
for="gender"><b>Gender</b></label>
<select
placeholder="Select
Gender" name="gender"
[(ngModel)]="model.gender"
#gender="ngModel"
[ngClass]="{
'is-invalid': f.submitted &&
gender.invalid }" required>
<option>Male</option>
<option>Female</option>
<option>Other</option>
</select>
<div
*ngIf="f.submitted
&&
gender.invalid" class="invalid-text">
<div
*ngIf="gender.errors.required">Gender
is required</div>
</div>
<br>
<label
for="country"><b>Country</b></label>
<select
placeholder="Select
country" name="country"
[(ngModel)]="model.country"
#country="ngModel"
[ngClass]="{
'is-invalid': f.submitted &&
country.invalid }" required>
<option
*ngFor="let
country of countries" [value]="country.id">
{{country.name}}</option>
</select>
<div
*ngIf="f.submitted
&&
country.invalid" class="invalid-text">
<div
*ngIf="country.errors.required">Country
is required</div>
</div>
<br>
<label
for="site"><b>Site
URL</b></label>
<input
type="url"
placeholder="Enter
site URL" name="site"
pattern="https?://.+"
[(ngModel)] ="model.site"
#site="ngModel"
[ngClass]="{
'is-invalid': f.submitted &&
site.invalid }"
required url>
<div
*ngIf="f.submitted
&& site.invalid"
class="invalid-text">
<div
*ngIf="site.errors.required">Site
is required</div>
<div
*ngIf="site.errors.pattern">Must
be a valid site URL</div>
</div>
<label
for="psw-repeat"><b>Password</b></label>
<input
type="password"
placeholder="Password"
name="pwd"
[(ngModel)]="model.pwd"
#pwd="ngModel"
[ngClass]="{
'is-invalid': f.submitted &&
pwd.invalid }" required
minlength="6">
<div
*ngIf="f.submitted
&& pwd.invalid"
class="invalid-text">
<div
*ngIf="pwd.errors.required">Password
is required</div>
<div
*ngIf="pwd.errors.minlength">Password
must be at least 6 characters</div>
</div>
<hr>
<p>By
creating an account you agree to our <a
href="#">Terms
& Privacy</a>.</p>
<button
type="submit"
class="registerbtn">Register</button>
</div>
<div
class="container
signin">
<p>Already
has an account? <a
href="#">Sign
in</a>.</p>
</div>
</form>
Import the FormsModule, RouterModule,
CustomerComponent, routing for navigate add customer page in the NgModule. Now
the NgModule looks like.
import
{ BrowserModule } from
'@angular/platform-browser';
import
{ NgModule } from
'@angular/core';
import
{FormsModule} from
'@angular/forms';
import
{RouterModule} from
'@angular/router';
import
{ AppComponent } from
'./app.component';
import
{ CustomerComponent
} from './customer/customer.component';
@NgModule({
declarations: [
AppComponent,
CustomerComponent
],
imports: [
BrowserModule,
FormsModule,
RouterModule.forRoot([{
path:'customer-link',
component:CustomerComponent
}
])
],
providers: [],
bootstrap: [AppComponent]
})
export
class AppModule
{ }
Result looks like –