Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度8:隐藏过去事件的管道不起作用_Javascript_Angular_Date_Pipe - Fatal编程技术网

Javascript 角度8:隐藏过去事件的管道不起作用

Javascript 角度8:隐藏过去事件的管道不起作用,javascript,angular,date,pipe,Javascript,Angular,Date,Pipe,我在模板中创建了一个复选框,以根据JSON数据中的bookingEnd隐藏比今天更早发生的所有元素。最近的-filter.pipe.ts管道应过滤所有过去的事件 对于我的问题,我得到一个错误TS2365:运算符“>”不能应用于类型“number”和“Date”。在管道中提前,并且没有数据显示在我的模板上。整个场景在纯JavaScript中工作,因此我认为bookingEnd绝对是一个日期对象 你能告诉我为什么应用管道过滤器后没有数据吗 JSON数据: 最近发布的-filter.pipe.ts:

我在模板中创建了一个复选框,以根据JSON数据中的bookingEnd隐藏比今天更早发生的所有元素。最近的-filter.pipe.ts管道应过滤所有过去的事件

对于我的问题,我得到一个错误TS2365:运算符“>”不能应用于类型“number”和“Date”。在管道中提前,并且没有数据显示在我的模板上。整个场景在纯JavaScript中工作,因此我认为bookingEnd绝对是一个日期对象

你能告诉我为什么应用管道过滤器后没有数据吗

JSON数据:

最近发布的-filter.pipe.ts:

bookings-table.component.html:


您已经收到的错误告诉您不要使用>来比较日期 要比较它们,请使用.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()