Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript httpParams删除未定义的参数_Javascript_Angular_Typescript - Fatal编程技术网

Javascript httpParams删除未定义的参数

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,

我需要在我的URL中发送参数以从服务器获取过滤数据

我这样设置参数

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());
});