Ion-datetime开启multiple=true时ionChange仅触发一次的问题咨询
Ion-Datetime开启multiple属性后,年月滚轮ionChange事件仅首次触发的问题
问题复现代码
HTML
<ion-datetime clearInput="true" presentation="date" preferWheel="false" max="2100" formControlName="example" minuteValues="0,10,20,30,40,50" slot="content" [multiple]="true" (ionChange)="dateTimeUpdated($event)"> </ion-datetime>
TypeScript
dateTimeUpdated($event){ console.log($event); }
问题现象
开启multiple="true"后,修改年月滚轮的值时,ionChange事件仅第一次触发,后续滚动或点击年月滚轮都不再响应;但**日期(day)**部分每次点击都会正常触发ionChange事件。移除multiple属性后,所有滚轮的修改操作都能正常触发事件。
相关情况说明
这个问题确实有不少开发者反馈过,属于ion-datetime多选模式下的已知行为(或潜在bug)。
核心原因是多选模式的事件触发逻辑针对日期选择做了特殊处理:当切换年月时,组件仅在首次切换后触发一次ionChange,后续年月切换因为没有选中新的日期(day)项,不会被判定为“完成有效选择”,因此不会触发事件;而日期点击每次都是明确选中了新的日期选项,所以会持续触发ionChange。
可选解决方案
如果需要保留多选功能同时监听年月变化,可以尝试以下两种思路:
- 结合表单控件的
valueChanges订阅,配合组件的ionFocus/ionBlur事件,捕获年月的修改; - 通过
ViewChild获取ion-datetime实例,手动监听内部滚轮的变化事件(注意不同Ionic版本的组件结构可能有差异,需要对应调整监听逻辑)。
内容的提问来源于stack exchange,提问作者AkiZukiLenn
相关产品推荐
相关产品推荐

