39

I'm using the new version of angular and angular material. I need to get the value of the datepicker at the moment the user change the date to then pass that value to a function and do something.

datepicker

  <mat-form-field>
    <input matInput [matDatepicker]="picker" placeholder="Choose a date" [(ngModel)]="roomsFilter.date">
    <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
    <mat-datepicker #picker [(ngModel)]="roomsFilter.date" ngDefaultControl (selectedChanged)="onChange($event)"></mat-datepicker>
  </mat-form-field>

and this the function.

  public onChange(event: any, newDate: any): void {
    console.log(event.target.value);
    // this.getData(newDate);
  }
4
  • This seems to be working for me, check here Commented Oct 26, 2017 at 19:36
  • I fixed. The datepicker was missing the event for some reason that still don´t why. Commented Oct 26, 2017 at 19:49
  • I assume you just want the value, so you can use console.log(event) ? plnkr.co/edit/8c21pXDrx7OCq93Gppa0?p=preview Commented Oct 28, 2017 at 9:14
  • Don't you already have the value in the ngModel binding for the input field? I don't think you need the ngModel for the #picker itself. (btw - I know this is an old post, but just looking for testing my datePicker in jasmine test and ran across this.) Commented Dec 21, 2018 at 14:40

3 Answers 3

41
<mat-form-field>
  <input matInput [matDatepicker]="expiration1" placeholder="Expiration" [formControl]="expiration" required (dateChange)="EndDateChange($event)">
  <mat-datepicker-toggle matSuffix [for]="expiration1"></mat-datepicker-toggle>
  <mat-datepicker #expiration1></mat-datepicker>
</mat-form-field>

Please check this demo link So you will get more idea. Example

Sign up to request clarification or add additional context in comments.

1 Comment

as of today this is working
18

According to the official documentation, the MatDatepickerInput has a dateInput EventEmitter and it emits the selected date.

<mat-form-field>
 <input (dateInput)="OnDateChange($event.value)" matInput [matDatepicker]="picker" 
 [placeholder]="field.label" />
 <mat-datepicker-toggle matSuffix [for]="picker"> </mat-datepicker-toggle>
 <mat-datepicker #picker></mat-datepicker>
</mat-form-field>

3 Comments

input tag not closed?
It's closed on the line below, the "[placeholder]="field.label" " belongs to it
@JonathP it's closed by the line juste below
16

Sorry I didn't post the answer before, but I solved the problem with the @AJT_82's comment. Here is the code:

Component HTML

  <mat-form-field>
    <input matInput [matDatepicker]="picker" placeholder="Choose a date" [(ngModel)]="roomsFilter.date">
    <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
    <mat-datepicker #picker [(ngModel)]="roomsFilter.date" ngDefaultControl (selectedChanged)="onDate($event)"></mat-datepicker>
  </mat-form-field>

compoment ts

  public onDate(event): void {
    this.roomsFilter.date = event;
    this.getData(this.roomsFilter.date);
  }

Basically, I just passed the $event of the datepicker to get the value.

2 Comments

selectedChanged seems to be removed in later versions of mat-datepicker
Is there a solution for that?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.