Angular 10 Material Date Picker with Calendar and Date Range
In this post we will give you information about Angular 10 Material Date Picker with Calendar and Date Range. Hear we will give you detail about Angular 10 Material Date Picker with Calendar and Date RangeAnd how to use it also give you demo for it if it is necessary.
Angular 10 has been recently released and introduced some new features as usual with any new major release. Among the new features is adding the date range feature to the date picker component of Angular Material.
Throughout this tutorial, we’ll learn how to create a basic material date picker using mat-datepicker
directive and then how to create one with a date range using the new mat-date-range-picker
directive available in Angular 10 Material.
We also learn how to use the matDatepickerFilter
property of the input
field to disable specific dates using a filter function and the disabled
property which is available on the <input>
, <mat-datepicker-toggle>
and <mat-datepicker>
elements to make the element disabled.
We’ll learn about Material date picker events that can be triggered from the input
field — the dateInput
and dateChange
events then how to use the min
and max
properties of the input
field to set the range of dates that can be selected by the users of your Angular 10 app.
Finally, we will learn how to change the calendar start view using the startView
property of <mat-datepicker>
directive which can be used to show a month, year, or multi-year for user selection and how to use the startAt
property to set start date on <mat-datepicker>
.
Generating an Angular 10 Project
As a prerequisite you need to have Angular 10 CLI installed which you need to use to generate a new Angular 10 project using the following command:
$ ng new AngularMaterialDateRangePicker#? Would you like to add Angular routing? No#? Which stylesheet format would you like to use? CSS
You’ll be prompted for routing and the style-sheets format, answer them as you see fit because that’s not going to affect the tested feature.
Setting up Angular 10 Material
Next, you need to setup Angular Material in your project. This can be done easily with the following command:
$ ng add @angular/material
Next, you need to choose a material theme for the project from the list:
? Choose a prebuilt theme name, or "custom"for a custom theme: (Use arrow keys)> Indigo/Pink [ Preview: https://material.angular.io?theme=indigo-pink ] Deep Purple/Amber [ Preview: https://material.angular.io?theme=deeppurple-amber ] Pink/Blue Grey [ Preview: https://material.angular.io?theme=pink-bluegrey ] Purple/Green [ Preview: https://material.angular.io?theme=purple-green ] Custom
Next, say Yes or No for the Material typography styles:
? Set up global Angular Material typography styles? No
Next, you need to choose to enable Browser Animation support:
? Set up browser animations for Angular Material? Yes
That’s it, we have added Material support to our Angular 10 project.
At this step, you can run your Angular 10 application in your web browser using the following command:
$ ng serve --open
Now you are ready to use the date range feature with the material date picker.
Importing Angular 10 Material Modules
Before using Material UI components in an Angular 10 project, you need to import the modules of the needed components in the application’s module.
Angular Material date picker can be used with the mat-datepicker
or mat-date-range-picker
directives in the component’s template. For using the Material date picker, we first need to import the MatDatePicker
module.
Next, you need to import the MatDatepickerModule
, MatNativeDateModule
, and MatInputModule
in your main module. Open the src/app/app.module.ts
file and update as follows:
//src/ap/app.module.tsimport{BrowserModule}from'@angular/platform-browser';import{NgModule}from'@angular/core';import{AppRoutingModule}from'./app-routing.module';import{AppComponent}from'./app.component';import{BrowserAnimationsModule}from'@angular/platform-browser/animations';import{MatDatepickerModule,MatNativeDateModule,MatInputModule}from'@angular/material';@NgModule({declarations:[AppComponent],imports:[BrowserModule,AppRoutingModule,BrowserAnimationsModule,MatNativeDateModule,MatInputModule,MatDatepickerModule],providers:[],bootstrap:[AppComponent]})exportclassAppModule{}
Angular 10 Material Date Picker Example
Let’s get started by implementing a simple basic date picker. Open the src/app/app.component.html
file and add the following markup:
<input matInput [matDatepicker]="picker" placeholder="Pick a date"><mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle><mat-datepicker #picker></mat-datepicker>
As you can see, the Material date picker is implemented, using an input
field, and a calender popup. We use the matDatepicker
property on the input
element to connect it to the mat-datepicker
directive using a template reference variable (#picker
).
You can also use the startAt
property to set start date on <mat-datepicker>
as follows:
<mat-datepicker#picker[startAt]="startDate"></mat-datepicker>
Make sure you define a startDate
variable in your component as follows:
startDate=newDate(1990,,1);
You can also change the calendar start view using startView
property of <mat-datepicker>
which can be used to show a month, year, or multi-year for selection with month is the default:
startView="year";startView="multi-year";
You can use the min
and max
properties of the input
field to set range of dates that can be selected as follows:
<input matInput [min]="minDate" [max]="maxDate" [matDatepicker]="picker" placeholder="Pick a date">
The minDate
and maxDate
variables need to defined in the associated component’s class with the desired date values:
minDate=newDate(1989,2,1);maxDate=newDate(1999,3,3);
Material date picker provides two events that can be fired from the input
field which are (dateInput)
and (dateChange)
:
dateInput
is fired when values are changed by typing a date in the input field or pick a date from the calendardateChange
is fired on blur after the user changes the value in the input field or the date is changed from the calendar.
This is an example:
<input matInput [matDatepicker]="picker" placeholder="Pick a date" (dateInput)="inputEvent($event)" (dateChange)="changeEvent($event)">
You need to define the inputEvent
and changeEvent
methods in the corresponding component’s class as follows:
inputEvent(event){console.log(event.value);}changeEvent(event){console.log(event.value);}
You can use the matDatepickerFilter
property of the input
field to disable specific dates using a filter function which returns either true or false for a date in calendar popup. If the the function returns false
for date, it will be disabled and can not be selected by users:
<input matInput [matDatepicker]="picker" [matDatepickerFilter]="fn" placeholder="Pick a date">
You need to define the filtering function in the corresponding component’s class. For example:
fn=(aDate:Date):boolean=>{constdate=aDate.getDate();// Odd dates are disabled.returndate%2==1;}
You can use the disabled
property which is available on the <input>
, <mat-datepicker-toggle>
and <mat-datepicker>
elements to make the element disabled and read-only:
<input matInput [matDatepicker]="picker" placeholder="Pick a date" [disabled]="true"> <mat-datepicker-toggle matSuffix [for]="picker" [disabled]="true"> </mat-datepicker-toggle> <mat-datepicker #picker [disabled]="true"></mat-datepicker>
Angular 10 Material Date Picker with Range Feature
Let’s now see how to use the date picker component with the range feature. First run the following command to generate a new Angular component:
$ ng g c date-range-picker-example
Next, open the src/app/date-range-picker-example/date-range-picker-example.html
file and update it as follows:
<mat-form-field><mat-label>Enter a date range</mat-label><mat-date-range-input[rangePicker]="picker"><inputmatStartDatematInputplaceholder="Start date"><inputmatEndDatematInputplaceholder="End date"></mat-date-range-input><mat-datepicker-togglematSuffix[for]="picker"></mat-datepicker-toggle><mat-date-range-picker#picker></mat-date-range-picker></mat-form-field>
Next, open the src/app/app.component.html
file and include the component as follows:
<date-range-picker-example></date-range-picker-example>
Conclusion
In this tutorial, we’ve seen how to use the material date picker with comes with a new date range feature in Angular 10.
We’ve seen how to create a basic material date picker using mat-datepicker
directive and then how to create one with a date range using the new mat-date-range-picker
directive available in Angular 10 Material.
We learned how to use the matDatepickerFilter
property of the input
field to disable specific dates using a filter function and the disabled
property which is available on the <input>
, <mat-datepicker-toggle>
and <mat-datepicker>
elements to make the element disabled and read-only.
We learned about Material date picker events that can be fired from the input
field which are (dateInput)
and (dateChange)
and how to use the min
and max
properties of the input
field to set the range of dates that can be selected by the users of your Angular 10 app.
Finally, we also learned how to change the calendar start view using startView
property of <mat-datepicker>
which can be used to show a month, year, or multi-year for selection and how to use the startAt
property to set start date on <mat-datepicker>
.
Hope this code and post will helped you for implement Angular 10 Material Date Picker with Calendar and Date Range. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so, For more interesting post and code Keep reading our blogs