NGX-Bootstrap Datepicker,当我在ipad上打开它时,没有在第一次单击时选择日期

问题描述 投票:0回答:1

我正在使用NGX-Bootstrap DatePicker当我在标签页或移动设备(除台式机和笔记本电脑以外的所有设备)中打开它时,我需要点击两次日期以进行选择。如何解决这个问题

对于演示,请在TAB或MOBILE中打开(https://valor-software.com/ngx-bootstrap/#/datepicker

datepicker angular7 ngx-bootstrap
1个回答
0
投票

昨天我遇到同样的问题。这是Apple设备出现的问题,因为它可以检测到用户的第一次触摸(如悬停)而不是点击,因此发生。

为了解决这个问题,我在输入中使用了一个事件,该事件在显示日历时会调用ngx-bootstrap datepicker来执行方法,例如:

<input type="text" bsDaterangepicker  (onShown)="onShowPicker($event)">

并且在onShownPicker方法中,我的算法正在检测用户是否在苹果设备内,然后,它使用ngxbootstrap-datepicker方法来实例化dayHandler(通常在检测到单击时调用,而不是将鼠标悬停时调用):

onShowPicker(event) {
    const dayHoverHandler = event.dayHoverHandler;
    const hoverWrapper = (hoverEvent) => {
        const { cell, isHovered } = hoverEvent;

        if ((isHovered &&
          !!navigator.platform &&
          /iPad|iPhone|iPod|Apple/.test(navigator.platform)) &&
          'ontouchstart' in window
        ) {
            (this.datapickerDirective as any)._datepickerRef.instance.daySelectHandler(cell);
        }

        return dayHoverHandler(hoverEvent);
    };
    event.dayHoverHandler = hoverWrapper;
}

要正常工作,您需要将datepicker指令作为viewChild,因为它已在上面的此方法中使用。就我而言,即时通讯使用类似:

@ViewChild(BsDaterangepickerDirective, {static: false}) datapickerDirective;
© www.soinside.com 2019 - 2024. All rights reserved.