Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

angular material 2 date picker auto open on focus

How angular material 2 date picker can be configured to be opened automatically on focus? I didn't find anything in the documentation at https://material.angular.io/components/datepicker/overview.

Current html is like this:

 <input [mdDatepicker]="myDatepicker" id="inputWeekEnding" name="inputWeekEnding" type="text" class="form-control" show-button-bar="false"        [(ngModel)]="weekEnding" [mdDatepickerFilter]="weekEndingPickerFilter" (ngModelChange)="weekEndingChanged()"                required>  <span class="input-group-btn">    <button type="button" class="btn btn-default" [mdDatepickerToggle]="myDatepicker">      <i class="glyphicon glyphicon-calendar"></i>                  </button>  </span>  <md-datepicker #myDatepicker md-open-on-focus ></md-datepicker>
like image 572
mehran Avatar asked Aug 25 '17 05:08

mehran


2 Answers

mdDatepicker provides method open() in order to open it manually doe developers. You can invoke it at md-input's focus event. See docs(Method of MatDatepicker).

<md-input-container>   <input mdInput [mdDatepicker]="picker" (focus)="picker.open()" placeholder="Choose a date">   <button mdSuffix [mdDatepickerToggle]="picker"></button> </md-input-container> <md-datepicker #picker></md-datepicker> 

Demo(included demo for opening on focus and opening in typescript)

like image 95
Pengyy Avatar answered Oct 21 '22 01:10

Pengyy


As per @angular/material2 v7.0.1 I've been able to handle the input focus correctly by...

  • adding (focus)="picker.open()" on matInput input element to trigger the datepicker opening on focus
  • adding (closed)="input.blur()" on mat-datepicker element so it could remove the focus on the input once the date-picker is closed
<mat-form-field>   <input matInput #input [matDatepicker]="picker" (focus)="picker.open()" formControlName="yourControlName">   <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>   <mat-datepicker #picker (closed)="input.blur()"></mat-datepicker> </mat-form-field> 
like image 44
j3ff Avatar answered Oct 21 '22 03:10

j3ff