如何强制 kendo-dateinput startdate 不等于 enddate

How to force kendo-dateinput startdate to not equal enddate

是否可以让 Kendo UI for Angular Dateinput 组件不允许 startDate 等于 endDate?

根据示例,我将其设置为这样的样式,但除了不允许特定日期外,我看不到任何限制范围的方法。这里所有的日子都是允许的,我只需要 endDate 总是最小,第二天。

谢谢!

 <kendo-daterange>
        <label>
            <span class="label">Start</span>
            <kendo-dateinput kendoDateRangeStartInput [(value)]="range.start"></kendo-dateinput>
        </label>
        <label>
            <span class="label">End</span>
            <kendo-dateinput kendoDateRangeEndInput [(value)]="range.end"></kendo-dateinput>
        </label>
        <kendo-daterange-popup [animate]="false"></kendo-daterange-popup>
    </kendo-daterange>

我稍微修改了 Telerik 示例以使其工作。查看我的 stackblitz.

这个想法是使用两个日期输入的 valueChange 事件发射器。每次有任何变化时,都会检查两个日期,如果它们相同,则 range.end 增加 1 天。

<kendo-dateinput kendoDateRangeStartInput [(value)]="range.start" (valueChange)="fixEndDate($event)"></kendo-dateinput>
<kendo-dateinput kendoDateRangeEndInput [(value)]="range.end" (valueChange)="fixEndDate($event)"></kendo-dateinput>
public fixEndDate(e: any) {
      if(this.range.start == null || this.range.end == null) {
        return;
      }

      const startTime = this.range.start.getTime();
      const endTime = this.range.end.getTime();

      if(startTime == endTime) {
        console.log('start and end are the same. Fixing...')
        const dayAfter = new Date(endTime);
        dayAfter.setDate(dayAfter.getDate() + 1);
        this.range.end = dayAfter;
      }
}

另请查看 this and this 以了解如何处理 javascript 中的日期。

您可以在开始日期输入选择器上使用最大输入,在结束日期输入选择器上使用最小输入来限制日期,如此处所述- https://www.telerik.com/kendo-angular-ui/components/dateinputs/dateinput/date-ranges/#toc-date-ranges