Angular的get传递多参数问题

楼主在自学Angular5的时候发现,新版的Angular已经丢弃http的形式改用Httpclient。但是在demo中发送http.get请求并传递多参数的时候发现,参数params如果是HttpParams类型的话,只能传递单参数,传递多参数要么被覆盖要么无法传递(不清楚是我自己代码问题还是啥),后面查看client.ds.ts中对params的声明,发现params除了可以传递HttpParams外,还可以直接传递JSON或者string类型。所以,楼主就自己简单了写了一个实现JSON传输的方法,可支持单复参数。

export class ProductSearchParames {
  constructor(
    public title: string,
    public price: number,
    public category: string
  ) {
  }
}
  public encodeParams(params: ProductSearchParames) {
    return Object.keys(params)
      .filter(key => params[key])
      .reduce((json: any, key: string) => {
        json[key] = params[key];
        return json;
      }, []);
  }

  search(params: ProductSearchParames): Observable<any> {
    return this.http.get('/api/products', {params: this.encodeParams(params)});
  }
在本地测试,可以正常传输参数,并且后台亦可正常接收

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值