Javascript 角度8:隐藏过去事件的管道不起作用
我在模板中创建了一个复选框,以根据JSON数据中的bookingEnd隐藏比今天更早发生的所有元素。最近的-filter.pipe.ts管道应过滤所有过去的事件 对于我的问题,我得到一个错误TS2365:运算符“>”不能应用于类型“number”和“Date”。在管道中提前,并且没有数据显示在我的模板上。整个场景在纯JavaScript中工作,因此我认为bookingEnd绝对是一个日期对象 你能告诉我为什么应用管道过滤器后没有数据吗 JSON数据: 最近发布的-filter.pipe.ts: bookings-table.component.html:Javascript 角度8:隐藏过去事件的管道不起作用,javascript,angular,date,pipe,Javascript,Angular,Date,Pipe,我在模板中创建了一个复选框,以根据JSON数据中的bookingEnd隐藏比今天更早发生的所有元素。最近的-filter.pipe.ts管道应过滤所有过去的事件 对于我的问题,我得到一个错误TS2365:运算符“>”不能应用于类型“number”和“Date”。在管道中提前,并且没有数据显示在我的模板上。整个场景在纯JavaScript中工作,因此我认为bookingEnd绝对是一个日期对象 你能告诉我为什么应用管道过滤器后没有数据吗 JSON数据: 最近发布的-filter.pipe.ts:
您已经收到的错误告诉您不要使用>来比较日期 要比较它们,请使用.getTime方法
new Date(x.bookingEnd).getTime() > new Date().getTime()
这里的问题似乎是日期。Parse返回一个数字。文件说: 您应该使用new DateDate.Parse[您的_字符串_DATE]; 但我建议您注意错误的字符串格式,空值将用于日期解析
最好避免使用日期。使用更现代的语法进行解析,然后使用getTime函数比较它们您应该通过获取时间戳(即new Date.getTime)来比较日期,这样您就可以使用大于和小于运算符。感谢您的帮助。但是返回的对象仍然是空的。这个错误似乎已经解决了!
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'recentFilter'
})
export class RecentFilterPipe implements PipeTransform {
transform(list: any[], checked: boolean) {
if (checked) {
const futureDates = list.filter(x => {
return Date.parse(x.bookingEnd) > new Date();
});
return futureDates;
} else {
return list;
}
}
}
<tr
*ngFor="
let item of bookings
| recentFilter: checked
">
...
</tr>
new Date(x.bookingEnd).getTime() > new Date().getTime()