ion-datetime组件isDateEnabled属性配置后不生效问题咨询
问题原因
isDateEnabled 不生效是两处写法错误导致的:
- 模板绑定逻辑错误
isDateEnabled属性需要接收校验函数引用,ion-datetime 组件内部渲染日期选择面板时,会自动把每个待渲染日期的ISO字符串传入这个函数,根据返回的布尔值判断日期是否可点。
你当前的写法是[isDateEnabled]="isDateEnabled('2022-06-26T00:00:00.000Z')",相当于初始化时就执行了一次函数,把返回的固定布尔值传给了组件,组件根本拿不到校验函数,自然无法对所有日期做判断。 - 日期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
相关产品推荐
相关产品推荐

