angular - Angular Material Datepicker:如何过滤以便只允许数组中的日期?
问题描述
我有一个从 API 返回的日期数组。例如,我可能有一个名为的数组validDates
,其中包含 9 月的所有星期一作为它们的值。我想使用 Material Datepicker过滤器只允许选择数组中的日期值。
示例日期数组
validDates = [
Mon Sep 02 2019 00:00:00 GMT-0500 (Central Daylight Time),
Mon Sep 09 2019 00:00:00 GMT-0500 (Central Daylight Time),
Mon Sep 16 2019 00:00:00 GMT-0500 (Central Daylight Time),
Mon Sep 23 2019 00:00:00 GMT-0500 (Central Daylight Time),
Mon Sep 30 2019 00:00:00 GMT-0500 (Central Daylight Time)
]
日期选择器过滤器(不工作)
myFilter = ( d: Date ): boolean => {
let dateOpen: boolean;
for ( let x = 0; x < this.validDates.length; x++ ) {
dateOpen = d.toString() === this.validDates[ x ].toString();
}
return dateOpen;
}
问题是它只返回最后一个日期(2019 年 9 月 30 日星期一 00:00:00 GMT-0500(中央夏令时)),true
因此只有 30 日成为可选的。我希望数组中的每个日期都是可选的。
如何返回true
数组中的每个值?
解决方案
为了只允许数组中的日期,该myFilter
方法可以定义如下。
myFilter = (d: Date): boolean => {
// Only allow dates in `validDates`.
return this.validDates.findIndex( (valid_date) => d.getTime() === valid_date.getTime()) > -1
}
要忽略 的时间部分Date
,请参阅:
Comparing date part only without comparison time in JavaScript
推荐阅读
- c# - F# 异步 lambda 与 C# 异步模型互操作
- ios - RootViewController 过渡效果不起作用
- scala - 无法创建 Lagom HelloWorld 演示
- python - 如何抑制 HdfsCLI 的 INFO 日志?
- powerquery - 组记录 - 保留第一个开始日期(最旧)和最后一个结束日期(最近)
- c++ - 位掩码枚举值的替代解决方案
- xaml - 标签内容/ContentStringFormat 的本地化
- angularjs - Angular SPA 中的 subscribe() 未触发 Http 发布请求
- laravel - laravel 雄辩的 ORM 更新和删除
- pg-promise - 如何将 pg-promise 与 connect-pg-simple 连接起来?