Angular Material Datepicker:选择日期时更改事件未触发

Bre*_*ett 18 angular-material angular

我正在使用Angular和Angular Material的Datepicker.在大多数情况下,一切都运行良好,但是我添加了一个(change)仅在用户手动输入日期时才起作用的事件.当用户点击日期选择器弹出窗口中的日期时,它不会被触发.要明确的是,date当用户点击日期时,事实上的值会发生变化,这只是(change)事件,最终我的updateCalcs()功能由于某种原因不会被触发.当用户点击日期选择器中的日期时,如何触发事件?

<md-input-container>
    <input mdInput [mdDatepicker]="datePicker" placeholder="Choose Date" name="date" [(ngModel)]="date" (change)="updateCalcs()" required>
    <button mdSuffix [mdDatepickerToggle]="datePicker"></button>
</md-input-container>
<md-datepicker #datePicker></md-datepicker>
Run Code Online (Sandbox Code Playgroud)

Lon*_*eld 13

替换changengModelChange

改变

<input mdInput 
       [mdDatepicker]="datePicker" 
       placeholder="Choose Date" 
       name="date" [(ngModel)]="date" 
       (change)="updateCalcs()" required>
Run Code Online (Sandbox Code Playgroud)

<input mdInput 
       [mdDatepicker]="datePicker" 
       placeholder="Choose Date" 
       name="date" [(ngModel)]="date" 
       (ngModelChange)="updateCalcs()" required>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这对我有用。接受的答案没有。 (2认同)

Fra*_*yen 7

<mat-form-field>
  <input matInput [matDatepicker]="picker" placeholder="Input & change events"
         (dateInput)="addEvent('input', $event)" (dateChange)="addEvent('change', $event)">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker></mat-datepicker>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

和.ts

addEvent(type: string, event: MatDatepickerInputEvent<Date>) {
    //console.log(event.value)
}
Run Code Online (Sandbox Code Playgroud)

在这里检查

  • 这应该是公认的答案(对于版本&gt; 6.4.7) (3认同)

Neh*_*hal 6

selectedChanged在里面使用md-datepicker.

<md-datepicker #datePicker (selectedChanged)="updateCalcs($event)"></md-datepicker>

$event将发出可在updateCalcs()函数中使用的新值.

updateCalcs(event){
  console.log(event);
}
Run Code Online (Sandbox Code Playgroud)

类似的演示


Stu*_*ows 6

dateChange在文本框中编辑日期和通过日历控件更改日期时,都会引发一个事件。看这里

<mat-form-field>
  <input matInput [matDatepicker]="datepicker" required placeholder="Choose a date" (dateChange)="valueChanged()">
  <mat-datepicker-toggle matSuffix [for]="datepicker"></mat-datepicker-toggle>
  <mat-datepicker #datepicker></mat-datepicker>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

  • 这是对我有用的整个解决方案的唯一答案。接受的答案没有。我正在使用 Angular 7&gt; (2认同)