【问题标题】:Allow selecting only first day of month in PrimeNG calendar只允许在 PrimeNG 日历中选择一个月的第一天
【发布时间】:2017-11-06 10:41:28
【问题描述】:

我有使用 PrimeNG calendar component 的 Angular 应用程序。

我需要添加一个限制以仅选择每个月的第一个日期。

该组件具有通过设置disabledDates 属性或一周中的某些天(disabledDays)来禁用某些日期的功能。但我还没有找到任何会禁用该月的日子的东西。

有人知道如何实现吗?

【问题讨论】:

  • 我建议不要使用 30 天日历,因为您只允许用户选择其中 1 天。使用年/月选择器。
  • @Joe 我明白了。我以后需要一些其他日期。

标签: angular datepicker primeng primeng-calendar


【解决方案1】:

好的。您可以使用disabledDates 功能,但显然将每个月的每一天都放入是不可行的,所以我建议您放入一个月的禁用日期,然后挂钩到onMonthChange 事件当用户查看另一个月份时更新您的禁用日期:

<p-calendar [disabledDates]="invalidDates" (onMonthChange)="updateDisabledDates($event)">

类似的东西:

public disabledDates: Date[] = [];

function updateDisabledDates(event) {
  const daysInMonth = new Date(event.year, event.month, 0).getDate();
  disabledDates = []
  for (let i = 2; i < daysInMonth; i++) {
    console.log(i)
    disabledDates.push(new Date(event.year, event.month, i));
  }
}

没有测试过。

【讨论】:

  • 谢谢。该解决方案仅在某些时候有效。我感觉验证选择能力的检查是与事件处理并行执行的,这会导致问题,但我不确定。我正在调试并试图了解发生了什么。另一个奇怪的事情是,它每次从 12 月切换到明年 1 月时都有效,我不明白为什么。
  • 您确定它正在被触发(函数中的控制台在正确的月份被调用)?我确实担心它只会在用户选择它的月份发生变化时才会触发。
  • 是的。虽然我没有使用console.log。我在调试器中使用了刹车点 - 每次我使用按钮更改月份时,它都会输入正确月份的代码。
  • 我能想到的唯一其他方法可能是禁用点击事件,并且样式看起来禁用,在当天类的 css 中(第一个元素除外)使用类似 pointer-events: none;
猜你喜欢
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2016-02-25
相关资源
最近更新 更多