angular httpClient按日期获取带或不带筛选器的订单

angular httpClient按日期获取带或不带筛选器的订单,angular,angular-services,angular2-observables,Angular,Angular Services,Angular2 Observables,我有一个规范日期,上面写着获取订单,其中date=date1>=:date和date2=

我有一个规范日期,上面写着获取订单,其中date=date1>=:date和date2=<:date,如果两个日期都为空,它应该返回所有订单 基本上,两个URL都应该从一个服务传递 baseUrl:string=; 私有过滤器URL:string='&end='

如何在angular service中实现这一点,以及如何在组件中调用它 我是这样开始的,但我是新来的,我不知道如何按照逻辑行事

  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)
  );

我将url设置为null,并在邮递员上尝试了它给出的异常不可解析的日期null,这是因为我将它们设置为null,现在的问题是我可以创建和if service get方法吗,该方法将使用“当日期设置为null,当我放置日期时,它将使用新日期来筛选,而不是动态构建url,让我来帮你吧

从'@angular/common/http'导入{HttpClient,HttpParams}; baseUrl:string='1〕http://localhost:8088/orders'; getOrdersfrom:Date,to:Date:Observable{ const params=新的HttpParams; 如果来自{ 参数设置“开始”,从; } 如果要{ 参数。将“结束”设置为; } 返回this.http.getthis.baseUrl,{params:params} ...; }
对于这些情况,您的服务器端API需要什么?您的服务终点决定了您发送的数据和方式。是的,我将更新我的问题并标记您now@DanielWStrimpel我刚刚用post man测试了url后更新了它注意,如果我只使用基本url,那么订单ot现在就可以工作了日期不接受的空值可能是我应该为一个表单创建两个post方法有过滤日期,一个将实现oninit方法?我不知道你在问什么。如果查询参数不为null,上面的代码将有条件地将它们添加到请求中。如果它们为空,您的请求将仅为空http://localhost:8088/orders. 否则,您的参数将在URL中一起发送,如?start=…&end=……当一个参数为null时会发生什么?它会给出错误或过滤器吗?我不知道您的服务器代码会做什么。这只会帮助您根据所述内容正确构建URL。如果其中一个为空,则不会将其作为查询参数发送。只有非空的才会随请求一起发送。在发布此消息之前,我尝试了两种方法,一种是带筛选器的,另一种是不带筛选器的。因此,当我测试它是否有效时,即使其中一个日期为空,也会使用一个日期进行筛选。鉴于上面的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)
  }