Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.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
Angular HTTP查询参数_Angular_Rest_Parameters_Angular Httpclient_Query Parameters - Fatal编程技术网

Angular HTTP查询参数

Angular HTTP查询参数,angular,rest,parameters,angular-httpclient,query-parameters,Angular,Rest,Parameters,Angular Httpclient,Query Parameters,如果我有一个存储用户选择的所有搜索过滤器的对象数组,下面是它的结构: export const filterDataObject = [{ date: '', tid: '', className: '', userName: '', category: [], limit: '50', sort: 'acs' }]; 例如,REST调用应该如下所示: http://localhost:1234/api/query? _filte

如果我有一个存储用户选择的所有搜索过滤器的对象数组,下面是它的结构:

export const filterDataObject = [{
    date: '',
    tid: '',
    className: '',
    userName: '',
    category: [],
    limit: '50',
    sort: 'acs'
}];
例如,REST调用应该如下所示:

   http://localhost:1234/api/query? 
_filter=tid%3Dcdfg&_limit=50&_sort=asc
而_filter正在收集除limit和sort之外的所有参数


如何将结果数组作为参数传递给httpClient rest请求,尤其是类别数组?

将数据附加到URLSearchParams

const params = new URLSearchParams();
    params.set('sort', val);
    params.set('tid', val);
    params.set('limit', val);
    params.set('sort', val);

    const options = new RequestOptions({
      headers: this.getAuthorizedHeaders(),
      responseType: ResponseContentType.Json,
      params: params,
      withCredentials: false
    });

    console.log('Options: ' + JSON.stringify(options));

    return this.http.post(this.BASE_URL, data, options)
      .map(this.handleData)
      .catch(this.handleError);

我在这里假设您只想向API发送一个过滤器,而不是数组,并且您使用的是angular 4+

选项1

选项2

你可以用

选项3

您也可以尝试使用(如果您不需要IE支持)

this.http.get('http://localhost:1234/api/query', {params: filterDataObject[0]})...
import {HttpParams} from '@angular/common/http';
//...
let params = new HttpParams();

for(let key of Object.keys(filterDataObject[0])){
    params= params.set(key, filterDataObject[0][key]) ;
}

this.http.get('http://localhost:1234/api/query', {params: params})...
let sp = new URLSearchParams();

for(let key of Object.keys(filterDataObject[0])){
    sp.set(key, filterDataObject[0][key]) 
}

const url = `http://localhost:1234/api/query?${sp.toString()}`;
this.http.get(url)...