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

ion-datetime组件isDateEnabled属性配置后不生效问题咨询

问题原因

isDateEnabled 不生效是两处写法错误导致的:

  1. 模板绑定逻辑错误
    isDateEnabled 属性需要接收校验函数引用,ion-datetime 组件内部渲染日期选择面板时,会自动把每个待渲染日期的ISO字符串传入这个函数,根据返回的布尔值判断日期是否可点。
    你当前的写法是[isDateEnabled]="isDateEnabled('2022-06-26T00:00:00.000Z')",相当于初始化时就执行了一次函数,把返回的固定布尔值传给了组件,组件根本拿不到校验函数,自然无法对所有日期做判断。
  2. 日期API使用错误
    你在TS里调用的getYear()是JavaScript已经废弃的原生方法,该方法返回的是当前年份减去1900的数值(例如2022年调用会返回122),永远不可能和2022相等,判断逻辑本身就失效。
修正后的代码

HTML 模板

<ion-datetime 
  [isDateEnabled]="isDateEnabled" 
  [firstDayOfWeek]="1" 
  presentation="date"
></ion-datetime>

注意:只需要绑定函数名即可,不要加括号手动传固定参数。

TS 逻辑

// 用箭头函数绑定this上下文,避免组件调用时this指向丢失
isDateEnabled = (dateIsoString: string): boolean => {
  const date = new Date(dateIsoString);
  // 用getFullYear()获取四位完整年份,替换废弃的getYear()
  return date.getFullYear() !== 2022;
}

修改后所有2022年的日期都会被置为不可选状态,符合预期效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:09:20