角度 httpClient 获取带有或不按日期过滤的订单



我有规范日期,说获取订单,其中日期= date1>= :d ate和date2=<:d ate,如果两个日期都为空,它基本上应该返回所有订单 基本上两个 URL 都应该从一个服务传递 baseUrl : string = 'http://localhost:8088/orders'; 私有过滤器网址:字符串 = 'http://localhost:8088/orders?start= &end= ';

如何在角度服务中实现这一点以及如何在我的组件中调用它 我是这样开始的,但我是 Angular 的新手,不知道如何按照逻辑进行

getOrders(From: Date, To: Date): Observable<Order[]> {
return this.http.get(this.baseUrl + '?start=' + From + '&end=' +To)
.pipe(map(this.extractData),
tap(data => console.log(JSON.stringify(data))),
catchError(this.handleError)
);

} 我想要的是让我的 html 自动显示整个列表,如果两个日期都过去了,应该过滤,我的想法是我在这种情况下不需要上面的 baseUrl,我将使用过滤器 URL,默认值应该为 null 有人可以告诉我如何继续谢谢你。 这是我的 SQL 以防万一

SELECT orderId, petrolQty, orderDate, truckId from orderz 
where (orderDate>=:start or :start is null) and (orderDate<=:end or :end is null)

所以基本上我会按订单日期过滤 所以我现在做的是这个

baseUrl : string = 'http://localhost:8088/orders';
getOrders(From: Date, To: Date): Observable<Order[]> {
return this.http.get(this.baseUrl + '?start=' + From + '&end='+To)
.pipe(map(this.extractData),
tap(data => console.log(JSON.stringify(data))),
catchError(this.handleError)
);
}

在我的组件中,我做到了

start: Date = null;
end: Date = null;
constructor(private orderService: OrderService, private router: Router) {
}
ngOnInit() {
this.orders = this.getOrdersDto();
}

private getOrdersDto() {
return this.orderService.getOrders(this.start, this.end)
}

我设置为 null 并在邮递员上尝试的 url 给出了异常无法解析的日期 null,这是因为我将它们设置为 null,现在的问题是我可以创建并且如果服务 get 方法,这将使用 'http://localhost:8088/orders 当日期设置为 null 时,当我输入日期时,它将使用新日期进行过滤

与其动态构建您的URL,不如让Angular为您完成。

import { HttpClient, HttpParams } from '@angular/common/http';
baseUrl : string = 'http://localhost:8088/orders';
getOrders(from: Date, to: Date): Observable<Order[]> {
const params = new HttpParams();
if (from) {
params.set('start', from);
}
if (to) {
params.set('end', to);
}
return this.http.get(this.baseUrl, { params: params })
...;
}

相关内容

  • 没有找到相关文章

最新更新