首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular URLSearchParams Vs HttpParams

Angular URLSearchParams Vs HttpParams
EN

Stack Overflow用户
提问于 2020-05-01 20:12:46
回答 1查看 834关注 0票数 2

以前我使用的是

代码语言:javascript
运行
复制
import { Http, Response, Headers, URLSearchParams  } from "@angular/http";

对于API调用

代码语言:javascript
运行
复制
getprojectscount(city, param){
let urlSearchParams = new URLSearchParams();
  urlSearchParams.set('limit', param.limit );
  urlSearchParams.set('limitrows', param.limitrows );
  urlSearchParams.set('locality', param.locality );

return this.http
    .get(this.myapiurl + city + "?", { search: urlSearchParams })
    .pipe(map(response => response.json().Counts));

}

在这个URLSEARCHPARAMS方法中,它工作得很好。->,因为当我们传递参数的时候。当它需要的时候,只有这个时间会传递给urlSearchParams。

当前我使用的是

代码语言:javascript
运行
复制
import {  HttpErrorResponse, HttpParams } from '@angular/common/http';

然后来到HttpParams。当我使用这个HTTPPARAMS时,每次每个参数都通过api,如果它也是空的。

对于API调用

代码语言:javascript
运行
复制
getprojectcount(city,param){
let params = new HttpParams();
params = params.append('limit', param.limit);
 params = params.append('limitrows', param.limitrows);
 params = params.append('locality', param.locality);
 return this.httpClient.get(this.myapiurl + city + "?", {params: params} ).pipe(retry(3), catchError(this.handleError));
}

任何针对此的解决方案。因为从这个httpparams。如果params为null,它也是在传递。

EN

回答 1

Stack Overflow用户

发布于 2020-05-01 22:48:22

你可以通过helper函数来实现

代码语言:javascript
运行
复制
    getprojectcount(param){
       return this.http.get(url, {params: toHttpParams(param)});
     }
   
     export function toHttpParams(obj: Object): HttpParams {
       return Object.getOwnPropertyNames(obj)
         .filter((key) => obj[key] !== undefined && obj[key] !== null )
         .reduce((p, key) => p.set(key, obj[key]), new HttpParams());
     }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61542266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档