如何通过功能禁用日期

时间:2019-07-24 14:45:38

标签: angular typescript flatpickr

我在用fatpickr和https://www.npmjs.com/package/angularx-flatpickr包角包

出现问题的StackBlitz:https://stackblitz.com/edit/angular-npep74

目标:我想使星期六和星期日显示为禁用(下一步是也不能选择假期)

问题:我找不到有关如何使用这种角度包绕的说明,并且像原始的flatpickr文档无法正常工作一样

官方文档说应该是这样的:

 "disable": [
        function(date) {
            // return true to disable
            return (date.getDay() === 0 || date.getDay() === 6);

        }
    ],

包装器文档什么也没说

我尝试了什么?:

HTML:

<input
               type="text"
               mwlFlatpickr
               [altInput]="true"
               dateFormat="Z"
               [(ngModel)]="desiredDate"
               [disable]="[disabledDay(date)]">

TS:

disabledDay(date) {
    console.log(date); // <---**on this point date is undefined**
    return true;
  }

预先感谢

2 个答案:

答案 0 :(得分:1)

您在代码中犯了错误,您不希望通过函数的执行,而您希望通过函数的定义

代替

<input
               type="text"
               mwlFlatpickr
               [altInput]="true"
               dateFormat="Z"
               [(ngModel)]="desiredDate"
               [disable]="[disabledDay(date)]">

更改为

<input
               type="text"
               mwlFlatpickr
               [altInput]="true"
               dateFormat="Z"
               [(ngModel)]="desiredDate"
               [disable]="[disabledDay]">

我分叉了您的闪电式结帐示例:

https://stackblitz.com/edit/angular-u7r7rj

答案 1 :(得分:1)

作为文档说明:[disable]指令将采用您要禁用的日期数组。

例如:

通过返回true false(将Date对象作为默认参数)的函数,并为加载到UI日历中的每个日期触发:

 [disable] = "[functionReturnBool]"

//In the ts:
 functionReturnBool(date){
   //Disable July:
   return date.getMonth() === 6 // july index is 6
 }

按范围:

 [disable] = "[{from: '2025-04-01',
                to: '2025-05-01'},
               {from: '2025-09-01',
                to: '2025-12-01'}]";

在特定日期之前:

 [disable] = "['2025-03-30', '2025-05-21']"

或将它们全部合并:

 [disable] = "[functionReturnBool, new Date(2019,6,24), '2019-07-25', {from: '2019-07-01', to: '2019-07-08'}]"