angular httpClient 获取有或没有按日期过滤的订单
angular httpClient get orders with or without a filter by date
我有规范日期说获取订单,其中 date = date1 >= :date 和 date2=< :date 如果两个日期都为空,它应该 return 基本上所有订单
基本上两个 urls 都应该从一个服务传递
baseUrl : string = 'http://localhost:8088/orders';
private filterUrl: string = 'http://localhost:8088/orders?start= &end= ';
如何在 angular 服务中实现这一点以及如何在我的组件中调用它
我是这样开始的,但我是 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 和默认值应该为空
谁能告诉我如何继续谢谢。
这是我的 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 并在邮递员上尝试它给出了异常 unparcable date null,这是因为我将它们设置为 null,现在的问题是我可以创建并且如果服务获取方法,那将当日期设置为 null 时使用 'http://localhost:8088/orders 并且当我输入日期时它将使用新日期来过滤
不要动态构建 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 })
...;
}
我有规范日期说获取订单,其中 date = date1 >= :date 和 date2=< :date 如果两个日期都为空,它应该 return 基本上所有订单 基本上两个 urls 都应该从一个服务传递 baseUrl : string = 'http://localhost:8088/orders'; private filterUrl: string = 'http://localhost:8088/orders?start= &end= ';
如何在 angular 服务中实现这一点以及如何在我的组件中调用它 我是这样开始的,但我是 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 和默认值应该为空 谁能告诉我如何继续谢谢。 这是我的 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 并在邮递员上尝试它给出了异常 unparcable date null,这是因为我将它们设置为 null,现在的问题是我可以创建并且如果服务获取方法,那将当日期设置为 null 时使用 'http://localhost:8088/orders 并且当我输入日期时它将使用新日期来过滤
不要动态构建 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 })
...;
}