比较日期类型Angular 5 - getDate()不是函数

时间:2018-01-26 13:02:16

标签: angular angular5

对于标题的非常通用的措辞,我想不出更好的方式来描述我正在尝试做的事情。

下面的代码是我home.component.ts的亮点

completedOrderTotal: Order[] = [];
completedOrderDay: Order[] = [];

 getCompletedOrders() {
    this.loadingCompletedOrders = true;
    var totalCompletedOrders = 0;
    var now = new Date();
    this.orderService.get(6).subscribe((order) => {
        this.completedOrderTotal = order.filter((c) => c.COMPLETED == true);
        this.completedOrderDay = order.filter((d) => d.COMPLETED == true && d.DATE_COMPLETED.getDay() < now.getDay()-1);
        this.totalCompletedDay = this.completedOrderDay.length;
        this.totalCompletedOrderTotal = this.completedOrderTotal .length;
        this.loadingCompletedOrders = false;

    });
}

export class Order {
   BUY_ORDER_ID: number;
   SELL_ORDER_ID: number;
   COMPLETED: boolean;
   BUY_TOTAL: number;
   SELL_TOTAL: number;
   BUY_TRIGGER: string;
   DATE_CREATED: Date;
   DATE_COMPLETED: Date;
}

order.service.ts(API服务)

 @Injectable()
export class OrderService {
constructor(private http: HttpClient) { }

   get(id: number) {
       return this.http.get<Order[]>('api/order/' + id);
   };
}

我想拥有一个包含2组数据的2个对象。 1.已完成的所有订单 2.所有在过去24小时内完成的订单

我正在努力解决这条问题:

 this.completedOrderDay = order.filter((d) => d.COMPLETED == true && d.DATE_COMPLETED.getDay() < now.getDay()-1);

我收到错误d.DATE_COMPLETED.getDay()不是函数。

有人能指出我在正确的方向吗?

干杯,

1 个答案:

答案 0 :(得分:1)

您正在使用HttpClient从后端获取JSON。 JSON没有Date类型。它有字符串,布尔值,数字,数组和对象。因此订单不可能有Date类型的字段。

此外,您应该真正改进您的命名约定。方法get()以ID为参数,从URL api/order/{id}获取,名称order都表明返回的内容是单个订单。但它似乎是一系列订单。

最后,

order.filter((c) => c.COMPLETED == true);

应该只是

order.filter(c => c.COMPLETED);