使用HttpParams的问题

时间:2018-11-23 01:38:55

标签: angular

  

Angular版本:4.3

我有一个带有3个搜索字段的屏幕:idnamecategory。填满字段后,我进行研究。

我希望对此代码有更好的建议,因为如果我有多个研究领域,那么对于大量的组合这将是不切实际的实现。 HttpParams对象是不可变的事实是,它使我陷入了字段组合的困境,因为我无法在检查字段是否已填充时进行连接。

请参见下面的代码:

pesquisaRestaurantes(id ? : string, name ? : string, category ? : string): Observable < Restaurant[] > {
  let params: HttpParams = undefined;
  if (id) {
    params = new HttpParams().append('id', id)
  } else {
    if (name && category) {
      params = new HttpParams().append('name', name).append('category', category)
    } else if (name) {
      params = new HttpParams().append('name', name)
    } else if (category) {
      params = new HttpParams().append('category', category)
    }
  }
  return this.http.get < Restaurant[] > (`${MEAT_API}/restaurants`, {
    params: params
  })
}

我期待更好的实施。谢谢。

1 个答案:

答案 0 :(得分:1)

应该工作:

...

 params = new HttpParams();

 If(name) params = params.append('name', name);

 If(category) params = params.append('category', category);

...