Angular 10/9 Material Date Picker, Input, CheckBox, Radio Button and Select
In this tutorial, you'll learn how to use Angular Material to style forms in your Angular 10 web application. We'll use common components like form fields, input, label, date pickers, radio buttons and select.
We'll particularly see how to use forms and date pickers by example.
We'll be using the following Material components in this tutorial to style a form and its fields:
- The Card Material component via
<mat-card>
, - The Form Field Material component via
<mat-form-field>
, - The CheckBox Material component via
<mat-checkbox>
, - The Input Material component via
<input matInput>
and<textarea matInput>
, - The Label Material component via
<mat-label>
, - The Date Picker component via
<mat-datepicker>
, - The Radio Button Material component via
<mat-radio-button
, - The Select Material component via
<mat-select>
.
These are the most commonly needed fields in forms.
We assume you have Angular CLI 10 installed and you have created a project. Both these tasks can be easily done from your terminal using these two commands:
$ npm install @angular/cli -g # Install Angular CLI globally on your system
$ ng new mat-form-example # Create a project named mat-form-example
Note: You need to have recent versions of Node.js and NPM installed on your system.
Setting up Angular Material in your Angular 10 Project
After setting up an example Angular 10 project, you need to import and set up Angular Material in your project and import the individual Material modules that you want to use using the import statement of TypeScript.
You can set up Angular Material in your Angular 10 project using the ng add
command:
$ cd mat-form-example
$ ng add @angular/material
You then need to configure or disable animations.
Importing the Angular 10 Material Modules
Next, you need to import the individual Material modules in your main application module to include the needed components. Open the src/app/app.module.ts
file and add the following imports:
import {MatInputModule} from '@angular/material/input';
import {MatButtonModule} from '@angular/material/button';
import {MatCardModule} from '@angular/material/card';
import {MatFormFieldModule} from '@angular/material/form-field';
import {MatCheckboxModule} from '@angular/material/checkbox';
import {MatDatepickerModule} from '@angular/material/datepicker';
import {MatRadioModule} from '@angular/material/radio';
import {MatSelectModule} from '@angular/material/select';
Next, you need to add these modules in the imports
array of the application module:
imports: [ /*...*/, MatInputModule, MatButtonModule, MatCardModule, MatFormFieldModule, MatCheckboxModule, MatDatepickerModule, MatRadioModule, MatSelectModule],
The MatCardModule
contains the Material Card component which will be used to wrap the form.
That's it, you can now use these Material components in your project.
Creating the Angular 10 Component & Styling it with Angular Material
In this tutorial, we'll build a simple form for creating contacts.
Let's create an Angular component where we'll add our form. Head back to your terminal and run the following command:
$ ng generate component contact-create
This will generate a ContactCreateComponent
component and will add it to the application module.
Adding a Material Card Container
Open the src/app/contact-create/contact-create.component.html
file and add the Card component before we use it as a container for our form:
<mat-card>
<mat-card-header>
<mat-card-title>Create Contact Form</mat-card-title>
</mat-card-header>
<mat-card-content>
<!-- put the form here -->
</mat-card-content>
<mat-card-actions>
<!-- put buttons here -->
</mat-card-actions>
</mat-card>
In the content area of the card, add this HTML form:
<form>
</form>
Adding a Material Input Field
In your form, add a Material form field with a label and input elements:
<mat-form-field>
<mat-label>Contact Name</mat-label>
<input matInput placeholder="Contact Name" [(ngModel)]="contactName" name="contactName" required>
</mat-form-field>
The <mat-form-field>
acts as a wrapper for the form fields.
Adding a Material Textarea Field
Next, let's create a form field with a label and textarea for entering the contact address:
<mat-form-field>
<mat-label>Contact Address</mat-label>
<textarea [(ngModel)]="contactAddress" matInput></textarea>
</mat-form-field>
We add the matInput
directive to the textarea to make it a Material component.
We use <mat-label>
to add labels, <input matInput />
for input fields and <textarea matInput>
for textarea fields.
Adding a Material Checkbox
Next, let's add a checkbox:
<mat-checkbox [checked]="isDeleted">Is deleted?</mat-checkbox>
Adding a Material Date Picker
Next, let's add a date input field and a date picker:
<mat-form-field>
<mat-label>Date</mat-label>
<input [value]="date.value" matInput [matDatepicker]="myPicker" placeholder="date">
<mat-datepicker-toggle matSuffix [for]="myPicker"></mat-datepicker-toggle>
<mat-datepicker #myPicker></mat-datepicker>
</mat-form-field>
The datepicker allows users to enter a date either through text input, or by choosing a date from the calendar. It is made up of several components and directives that work together. Read more information
Adding a Material Radio Group & Buttons
Next let's add some radio buttons to specify the gender of our contact:
<mat-label>Gender</mat-label>
<mat-radio-group [(value)]="contactGender">
<mat-radio-button value="male">Male</mat-radio-button>
<mat-radio-button value="female">Female</mat-radio-button>
</mat-radio-group>
We bind the contactGender
variable to the value
of the radio group.
Adding a Material Select Field
Finally, let's add the last field which is a Select field:
<mat-form-field>
<mat-label>Source of Contact</mat-label>
<mat-select [(value)]="contactSource" placeholder="Source of contact">
<mat-option value="email">Email</mat-option>
<mat-option value="website">Website</mat-option>
<mat-option value="direct">Direct</mat-option>
</mat-select>
</mat-form-field>
Next, all we need to add to our form is a button to save the contact:
<mat-card-actions>
<button mat-raised-button (click)="saveContact()" color="primary">Save Contact</button>
</mat-card-actions>
Adding Variables to The Component
In src/app/contact-create/contact-create.component.ts
add these variables:
contactName: string = "";
contactAddress: string = "";
contactSource: string = "direct";
contactGender: string = "male";
isDeleted : boolean = false;
date = new FormControl(new Date());
public saveCustomer(){
/* Typically this method will be used to send the contact form to a server to save it*/
}
Conclusion
Angular Material provides various components to build professional UI forms with individual components for common fields.
We used form fields, input, label, date pickers, radio buttons and select.
In this tutorial, you have seen how you can build a simple form, with a date picker, using Angular 10 Material.
-
Date: