以前我使用的是
import { Http, Response, Headers, URLSearchParams } from "@angular/http";
对于API调用
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。
当前我使用的是
import { HttpErrorResponse, HttpParams } from '@angular/common/http';
然后来到HttpParams。当我使用这个HTTPPARAMS时,每次每个参数都通过api,如果它也是空的。
对于API调用
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,它也是在传递。
发布于 2020-05-01 22:48:22
你可以通过helper函数来实现
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());
}
https://stackoverflow.com/questions/61542266
复制相似问题