You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MatDatePicker如何显示其他月份的日期

让MatDatePicker显示上月及下月日期的解决方案

情况1:仅显示前后月日期(不可选)

MatDatePicker的日历组件默认会显示相邻月份的部分日期,但可能因默认样式被隐藏。如果你的日历没显示这些日期,可通过以下步骤修复:

  1. 覆盖默认CSS,确保其他月份的日期可见:
.mat-calendar-body-other-month {
  display: table-cell !important;
  opacity: 0.6; /* 可选:降低透明度,区分当前月日期 */
}

情况2:显示并允许选择前后月日期

如果需要让这些前后月的日期可以被选择,需结合MatCalendar的属性配置:

  1. 在模板中获取日期选择器的引用:
<input matInput [matDatepicker]="datePicker">
<mat-datepicker #datePicker></mat-datepicker>
  1. 在组件类中通过ViewChild获取MatCalendar实例,设置相关属性:
import { Component, ViewChild, AfterViewInit } from '@angular/core';
import { MatCalendar } from '@angular/material/datepicker';

@Component({
  selector: 'app-your-component',
  templateUrl: './your-component.component.html',
  styleUrls: ['./your-component.component.css']
})
export class YourComponent implements AfterViewInit {
  @ViewChild('datePicker') datePicker!: MatCalendar<Date>;

  ngAfterViewInit(): void {
    // 强制显示其他月份的日期
    this.datePicker.showOtherMonths = true;
    // 允许选择其他月份的日期
    this.datePicker.selectOtherMonths = true;
  }
}

补充:自定义前后月日期样式

如果需要区分当前月和前后月的日期样式,可使用dateClass属性:

  1. 在组件类中定义样式判断逻辑:
dateClass = (date: Date): string => {
  const currentMonth = new Date().getMonth();
  return date.getMonth() !== currentMonth ? 'other-month' : '';
};
  1. 在模板中绑定该属性:
<mat-datepicker #datePicker [dateClass]="dateClass"></mat-datepicker>
  1. 添加自定义CSS:
.other-month {
  color: #999;
  font-style: italic;
}

内容的提问来源于stack exchange,提问作者Danos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:30:12