angular - 如何捕捉 Material Datepicker 月份分页事件?

标签 angular angular-material

我想捕捉来自月份“左”和“右”选择按钮的事件,但我找不到任何关于它的文档。

material datepicker month selector image

在 Material Datepicker 中单击“左”和“右”月份选择框时会触发哪些事件?

最佳答案

好吧,我的另一个回答是错误的,让我们换一个方法。
假设我们有一个 CustomTemplate Header。因为我们希望它看起来像原始的 DatePicker header ,所以我们复制了 gitHub of angular 中的模板。 ,但我们正在更改上一个按钮旁边的功能,所以就像

<div class="mat-calendar-header">
  <div class="mat-calendar-controls">
    <button mat-button type="button" class="mat-calendar-period-button"
            (click)="currentPeriodClicked()" [attr.aria-label]="periodButtonLabel"
            cdkAriaLive="polite">
      {{periodButtonText}}
      <div class="mat-calendar-arrow"
           [class.mat-calendar-invert]="calendar.currentView != 'month'"></div>
    </button>

    <div class="mat-calendar-spacer"></div>

    <ng-content></ng-content>

                <!--see that we change previousClicked by customPrev-->
    <button mat-icon-button type="button" class="mat-calendar-previous-button"
            [disabled]="!previousEnabled()" (click)="customPrev()"
            [attr.aria-label]="prevButtonLabel">
    </button>

                <!--see that we change nextClicked by customNext-->
    <button mat-icon-button type="button" class="mat-calendar-next-button"
            [disabled]="!nextEnabled()" (click)="customNext()"
            [attr.aria-label]="nextButtonLabel">
    </button>
  </div>
</div>  

现在我们定义了从 MatCalendarHeader 扩展的 customHeader
export class ExampleHeader extends MatCalendarHeader<any> {

  /** Handles user clicks on the period label. */
  currentPeriodClicked(): void {
    this.calendar.currentView = this.calendar.currentView == 'month' ? 'multi-year' : 'month';
  }

  /** Handles user clicks on the previous button. */
  customPrev(): void {
    console.log(this.calendar.activeDate)
    this.previousClicked()
  }

  /** Handles user clicks on the next button. */
  customNext(): void {
    console.log(this.calendar.activeDate)
    this.nextClicked()
  }

然后,只说使用这个 ExampleHeader
<mat-form-field>
  <mat-label>Custom calendar header</mat-label>
  <input matInput [matDatepicker]="picker">
  <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
  <mat-datepicker #picker [calendarHeaderComponent]="exampleHeader"></mat-datepicker>
</mat-form-field>

stackblitz

关于angular - 如何捕捉 Material Datepicker 月份分页事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57510066/

相关文章:

javascript - Material 设计 (AngularJS) <md-select> 不工作

angular - 如何使 mat-table 行拖放与 cdkDragHandle 一起工作,以便只能使用句柄拖动该行?

node.js - 使用 NodeJS 和 Angular6 在 MongoDB 的背景 URL 中显示图像

javascript - 如何使用 Firebase 在 Ionic 3 中通过参数检索数据

angular - 在 webpack 中使用 ExtractTextPlugin 忽略 Angular2 组件样式表

javascript - Angularjs 验证不适用于复制粘贴

angularjs - Angular Material : md-datepicker CSS display issue

javascript - 如何实现我想通过子组件动态渲染表单控件的 Angular 形式的功能?

html - ngtsc(2345) - 'Event' 类型的参数不能分配给 'SortEvent' 类型的参数

html - Angular Material 选项卡动画不起作用