【问题标题】:Angular - Make dates of calendar green upon opening the popupAngular - 打开弹出窗口时使日历的日期变为绿色
【发布时间】:2023-01-13 03:37:14
【问题描述】:

我试图让我的日历在打开我的日期列表(这是一个字符串列表)中的所有日期时具有绿色背景。

ngOnInit(): void {
   this.roomService.getReservableDatesFromRoom(room.roomName).subscribe(data => {
      for (let i = 0; i < data.length; i++) {
        this.dates.push(`${data[i].reservableDate[0]}-${data[i].reservableDate[1]}-${data[i].reservableDate[2]}`);
      }
    });
  }

我的 HTML 看起来像这样:

<mat-card class="demo-inline-calendar-card">
    <h2 class="text-center">Reserveerbare datums</h2>
    <mat-calendar #calendar (selectedChange)="select($event,calendar)" [dateClass]="isSelected"></mat-calendar>
</mat-card>

可视化:

进入此屏幕时日期列表已经填满,但所有值都是红色的。

我已经有一个函数(与 [dateClass] 属性一起使用)所以当我选择某个日期时它会变成绿色。同样只有在选择 1 个日期后,我列表中的其他日期也会变成绿色,但我想让它们变成绿色而不选择 1 个日期:

isSelected = (date: any) => {
    if (date.isBefore(Date.now() - 1, 'day')) {
      return 'disabled-dates'
    }
    return this.dates.filter((x) => date.isSame(x)).length > 0 ? 'selected' : 'not-selected';
  };

如果有人知道如何做到这一点,将不胜感激!

提前致谢!

【问题讨论】:

    标签: angular typescript frontend


    【解决方案1】:

    简单的解决方案:

     **<mat-calendar #calendar (selectedChange)="select($event,calendar)" [dateClass]="!isSelected"></mat-calendar>**
    

    代替

    **<mat-calendar #calendar (selectedChange)="select($event,calendar)" [dateClass]="isSelected"></mat-calendar>**
    

    您只需要默认应用 dateClass 并使您可能希望拥有 isSelected 属性的假值。

    【讨论】:

    • dateClass 不是类型:Boolean 所以添加 !不起作用。它给我以下错误:类型“boolean”不可分配给类型“MatCalendarCellClassFunction<any>”。
    • 我说的是 isSelected 属性不是 dateClass ,
    • 添加“!isSelected”
    猜你喜欢
    • 1970-01-01
    • 2020-03-14
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多