Angular 角度材质单击下个月或上个月不工作

Angular 角度材质单击下个月或上个月不工作,angular,angular-material,angular-material-datetimepicker,Angular,Angular Material,Angular Material Datetimepicker,代码段: <mat-calendar *ngIf="dataAvailable" #openCalendar [dateClass]="getAttendance()" (selectedChange)="onSelect($event)" (monthSelected)="monthSelected($event)"> </mat-calendar> Angular Material不提供在单击下一个月和上一个月时调用某些事件的选项。如果我们需要使用角材质日历,是

代码段:

<mat-calendar *ngIf="dataAvailable" #openCalendar [dateClass]="getAttendance()" (selectedChange)="onSelect($event)" (monthSelected)="monthSelected($event)"> </mat-calendar>


Angular Material不提供在单击下一个月和上一个月时调用某些事件的选项。如果我们需要使用角材质日历,是否有解决方法?

对于仍在搜索此问题解决方案的用户,您可以使用ngAfterViewInit中的查询选择器访问上一个和下一个箭头,这可能不是最好的方法,但对我来说很有用

ngAfterViewInit(): void {
  const BACK_BUTTON = document.querySelector('.mat-calendar-previous-button');
  const FORWARD_BUTTON = document.querySelector('.mat-calendar-next-button');
  if (BACK_BUTTON) {
    this.renderer.listen(BACK_BUTTON, 'click', () => {
      console.log(this.dateAdapter.today());
      if (this.calendarDate.getMonth() === 0) {
        this.calendarDate.setFullYear(this.calendarDate.getFullYear() - 1);
        this.calendarDate.setMonth(11);
      } else {
        this.calendarDate.setMonth(this.calendarDate.getMonth() - 1);
      }
    });
  }
  if (FORWARD_BUTTON) {
    this.renderer.listen(FORWARD_BUTTON, 'click', () => {
      if (this.calendarDate.getMonth() === 11) {
        this.calendarDate.setFullYear(this.calendarDate.getFullYear() + 1);
        this.calendarDate.setMonth(0);
      } else {
        this.calendarDate.setMonth(this.calendarDate.getMonth() + 1);
      }
    });
  }
}

对于仍在搜索此问题解决方案的用户,您可以使用ngAfterViewInit中的查询选择器访问“上一个”和“下一个”箭头,这可能不是最好的方法,但对我来说很有用

ngAfterViewInit(): void {
  const BACK_BUTTON = document.querySelector('.mat-calendar-previous-button');
  const FORWARD_BUTTON = document.querySelector('.mat-calendar-next-button');
  if (BACK_BUTTON) {
    this.renderer.listen(BACK_BUTTON, 'click', () => {
      console.log(this.dateAdapter.today());
      if (this.calendarDate.getMonth() === 0) {
        this.calendarDate.setFullYear(this.calendarDate.getFullYear() - 1);
        this.calendarDate.setMonth(11);
      } else {
        this.calendarDate.setMonth(this.calendarDate.getMonth() - 1);
      }
    });
  }
  if (FORWARD_BUTTON) {
    this.renderer.listen(FORWARD_BUTTON, 'click', () => {
      if (this.calendarDate.getMonth() === 11) {
        this.calendarDate.setFullYear(this.calendarDate.getFullYear() + 1);
        this.calendarDate.setMonth(0);
      } else {
        this.calendarDate.setMonth(this.calendarDate.getMonth() + 1);
      }
    });
  }
}

“点击下个月和上个月”,你是指右上角的箭头吗?你是指“mat datepicker”?datepicker提供一个(输入)和(更改)事件以及一个(dateInput)和(dateChange)事件。这可能会有帮助。是的,我的意思是点击箭头。我使用的是mat日历,而不是mat日期选择器。库中似乎只有两个输出事件。单击下一个和上一个箭头“单击下一个和上一个月”时不提供任何事件,您是指右上角的箭头吗?您是指“mat datepicker”?datepicker提供一个(输入)和(更改)事件以及一个(dateInput)和(dateChange)事件。这可能会有帮助。是的,我的意思是点击箭头。我使用的是mat日历,而不是mat日期选择器。库中似乎只有两个输出事件。单击下一个和上一个箭头时不提供任何事件