Javascript httpParams删除未定义的参数
我需要在我的URL中发送参数以从服务器获取过滤数据 我这样设置参数Javascript httpParams删除未定义的参数,javascript,angular,typescript,Javascript,Angular,Typescript,我需要在我的URL中发送参数以从服务器获取过滤数据 我这样设置参数 const queryParams = new HttpParams( { fromObject: { page: this.paginator.pageIndex.toString(), pageSize: this.paginator.pageSize.toString(), search: this.searchKey,
const queryParams = new HttpParams(
{
fromObject: {
page: this.paginator.pageIndex.toString(),
pageSize: this.paginator.pageSize.toString(),
search: this.searchKey,
sortBy: this.selectedFilterByStatusValue,
sortByType: this.selectedFilterSortByValue
}
});
为我服务
getData(params: HttpParams) {
return this.apiService.get<IResponseList<IData>>(`${this.url}/list`, params);
}
我尝试使用.set(“page”,this.paginator.pageIndex)
和.append(…)
,但我总是得到相同的结构
另外,我尝试直接在服务中修复此问题,但此问题不起作用,我再次得到未定义的
this.httpClient.get(`${this.url}/list`, {
params: Object.entries(queryParameterObject).reduce((queryParams, [key, value]) => queryParams.set(key, value), new HttpParams());
});
Thnx尝试在reduce
中跳过它们
this.httpClient.get(`${this.url}/list`,{
params:queryParameterObject?queryParameterObject.keys().reduce((queryParams,key)=>{
//从地图中获取价值
let值:any=queryParameterObject.get(键);
//提取数组中的值
value=Array.isArray(value)→值[0]:值;
//仅将定义的值添加到参数
如果(值!==未定义&&value!==空){
queryParams[键]=值;
}
返回查询参数;
}, {}) : {};
});
这里有一句我认为可能适合您的话:
Object.keys(queryParameterObject).forEach(key=>!queryParameterObject[key]?删除queryParameterObject[key]:{});
this.httpClient.get(`this.url}/list`,{params:new-HttpParams({fromObject:queryParameterObject})});
它将清除带有null或未定义值的变量(但也会对其进行变异!)。Ah,您是否可以尝试使用returnqueryparams.set(key,value)如果
,则在中选择code>?哪一行失败?啊,这意味着queryParameterObject
不存在,我添加了包装器来处理这个问题。更新后,现在空值也消失了,我想你根本不需要HttpParams,请尝试让我知道它是否有效。另外,编码器
的值是多少?看起来它是一个对象,您希望如何将其传递到后端?作为json?映射是一个值数组,您希望如何发送该数组?第1页,或第[1]页,或第[]=1页?非常好。。。非常感谢。现在一切都正常了:)Thnx,你能在我的例子中实现这个吗?因为,当我试着这样放置这个this.httpClient.get(
${this.url}/list,{params:Object.keys(queryParameterObject.forEach)(key=>!queryParameterObject[key]?delete queryParameterObject[key]:{})
I get in editor warning for params没有重载匹配此调用
更新了我的答案。它只是在创建httpParams之前清理原始对象。对于您答案中的第一行,I get error无法将未定义或null转换为object
并且此错误无法删除[object object]的属性“updates”
this.httpClient.get(`${this.url}/list`, {
params: Object.entries(queryParameterObject).reduce((queryParams, [key, value]) => queryParams.set(key, value), new HttpParams());
});