我的规格日期表示获取订单,其中date = date1> =:date和date2 =< :日期,如果两个日期都为空,它应该基本上返回所有订单 基本上两个网址都应该从一个服务传递 baseUrl:string =' http://localhost:8088/orders&#39 ;; private filterUrl:string =' http://localhost:8088/orders?start=& end =';
我如何在角度服务中实现这一点,以及如何在我的组件中调用它 我就是这样开始的,但是我对角度的新手不知道如何通过逻辑
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上面我将使用过滤网址和默认值应为null 谁能告诉我如何继续谢谢你。 这是我的sql incase
SELECT orderId, petrolQty, orderDate, truckId from orderz \
where (orderDate>=:start or :start is null) and (orderDate<=:end or :end is null)
所以基本上我将按orderDate过滤 所以我现在所做的就是这个
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)
}
url我设置为null并尝试postman它给了异常unarcable日期null,这是因为我将它们设置为null,现在问题是我可以创建和如果服务获取方法,那将使用&#39; { {3}}当日期设置为空时,当我输入日期时,它将使用新日期来过滤
答案 0 :(得分:1)
不要动态构建您的网址,而是让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 })
...;
}