Angular Material 8/9 Datepicker Tutorial

By Digamber Rawat Last updated on
Angular Material 8/9 Data Table tutorial is going to be explained in this tutorial. We’ll build an Angular 8 app to show you how to work with Angular Material 8 datepicker. Angular Material is a ui library which offers plenty of ui components to build modern user-centric interfaces.

Angular Material Datepicker service works with <mat-datepicker> directive. It allows users to select a date from the angular material calendar. To get the dates working with in an Angular project, we need to import MatDatepickerModule API.

A datepicker is a combination of text input and a calendar pop-up generated via matDatepicker property. In this tutorial, we will teach you how to configure the required dependency to implement datepicker control in an Angular project.

Angular Material Datepicker Tutorial

Firstly, We’ll set up a basic Angular project using latest Angular CLI. After that, we’ll install the Angular material 8 ui library and create a separate angular-material.module.ts file. Here we can import other ui components of Angular material in future.

#1 – Installation and Setup Angular project

To setup Angular project for Angular material datepicker demo run the following command.

ng new angular-material8-datpicker

Answer the questions:

# ? Would you like to add Angular routing? = No
# ? Which stylesheet format would you like to use? = CSS

Head over to the Angular 8/9 project directory.

cd angular-material8-datpicker

#2 – Install and setup Angular Material 8 ui library

To set up angular material 8 ui library, enter the following command.

ng add @angular/material

Select the Angular material theme from the given options:

? Choose a prebuilt theme name, or "custom" for a custom theme: Indigo/Pink

❯ 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 ]

Choose Hammer.js (Gesture recognition support) and Angular browser animation support.

# Set up HammerJS for gesture recognition? (Y/n) = Y
# ? Set up browser animations for Angular Material? (Y/n) = Y

To import the angular material theme, include the given below code to your src > index.html file.

<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

Go to src > styles.css file and add the following code.

@import "~@angular/material/prebuilt-themes/indigo-pink.css";

Finally, we’ve setup angular material ui library in angular 8/9 app. Enter the below command in your terminal and hit enter to run the project.

ng serve --open

To check out the Angular material 8 documentation please visit here.

#3 – Create Specific Angular Material Module File

In this part of the tutorial, we’ll create a specific angular material module file. As we know Angular material offers wide range of ui components so that we can import the angular material ui components in this file for easy manageability.

Go to app > angular-material.module.ts file and include the following code. This file will be imported in app.module.ts file.

import { NgModule } from '@angular/core';
import { 
   MatDatepickerModule, 
   MatNativeDateModule,
   MatFormFieldModule,
   MatInputModule
} from '@angular/material';

@NgModule({
   imports: [
      MatDatepickerModule,
      MatNativeDateModule,
      MatFormFieldModule,
      MatInputModule
   ],
   exports: [
      MatDatepickerModule,
      MatNativeDateModule,
      MatFormFieldModule,
      MatInputModule
   ]
})

export class AngularMaterialModule { }

Now, go to app.module.ts file and import the AngularMaterialModule.

import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';

/* Angular material 8 */
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { AngularMaterialModule } from './angular-material.module';
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    AngularMaterialModule,
  ],
  providers: [],
  bootstrap: [AppComponent],
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class AppModule { }

#4 – Adding Angular Material Datepicker

In next step we’ll add an input field which will show datepicker in frontend.

Understand Angular Datepicker input field

Angular material datepicker is a combination of text input and calendar popup.

<input [matDatepicker]="myDatepicker">
<mat-datepicker #myDatepicker></mat-datepicker>

To toggle on Angular calendar icon, we use datepicker toggle button as mentioned in the example below.

<input [matDatepicker]="myDatepicker">
<mat-datepicker-toggle [for]="myDatepicker"></mat-datepicker-toggle>
<mat-datepicker #myDatepicker></mat-datepicker>

The <mat-form-field> tag is a wrapper for input fields in an angular material form.

<mat-form-field>
  <input matInput [matDatepicker]="picker" placeholder="Choose a date">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
</mat-form-field>

#5 – Initialize Angular Material Calendar View

Initializing calendar view in Angular Material is not very difficult job. We can use the startView property of <mat-datepicker> date field. The calendar view can be set to month, year, or multi-year.

Go to app.component.html file and add the following code.

<mat-form-field>
  <input matInput [matDatepicker]="picker" placeholder="Choose a date">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker startView="year" [startAt]="startDate"></mat-datepicker>
</mat-form-field>

Go to app.component.ts file and add the following code.

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  startDate = new Date(2000, 0, 2);
}

Finally, we’ve created Angular 9 and Angular Material 8 8 Date-picker tutorial with examples.

Digamber Rawat
Digamber Rawat

Full stack developer with a passion for UI/UX design. I create beautiful and useful digital products to solve people’s problem and make their life easy.

Thanks for checking this tutorial out :) Let me know if you have any suggestions or issue related to this tutorial, or you want to request a new tutorial. Just shoot me a mail here.