无法使用angular http.get发送参数

时间:2017-08-27 06:39:30

标签: angular typescript

我正在尝试向webapi发送页码和页面大小, 但没有传递任何参数,我已经在vs代码中对应用程序进行了调试,pagingModel将pageSize和PageNumber作为成员并且它们都有值,但是当我打开chrome dev工具时,请求url中没有参数 我的代码有问题吗?

getTasks(pagingModel: IPagingModel): Promise<TaskList> {
    const url = this.taskUrl;
    const params = new URLSearchParams();
    let option: RequestOptions;
     // tslint:disable-next-line:forin
     for (const key in pagingModel) {
      params.set(key, pagingModel[key]);
     }

    option = new RequestOptions( {search: params, params: params});

    return this.http.get(url, option)
               .toPromise()
               .then(response => response.json() as TaskList)
               .catch(this.handleError);
  }

enter image description here

3 个答案:

答案 0 :(得分:1)

我不认为这是最好的方式。但也是这样,工作。

const url = this.taskUrl;
url += '?';

Object.keys(pagingModel).forEach(key => {
        url += `${encodeURIComponent(key)}=${encodeURIComponent(pagingModel[key])}&`;
    });

return this.http.get(url)
           .toPromise()
           .then(response => response.json() as TaskList)
           .catch(this.handleError);

}

答案 1 :(得分:0)

你可以使用Angular v4中的新HttpClientModule来尝试这样的事情

import {HttpParams} from "@angular/common/http";
const params = new HttpParams()
    .set('pagenumber', '<your para>')
    .set('pagesize', "<your para>");

this.http
    .get("<requrl>", {params}) // mind this you dont have to use res.json() as httpClientModule has .json() by default
  

我们通过链接set()来构建HTTPParams对象   方法。因为HTTPParams是不可变的,以及它的API方法   不要导致对象突变。相反,对set的调用将返回一个新的   包含新值属性的HttpParams对象。

以下不会工作

params.set('pagenumber', '<para>')
params.set('pagesize', "<para>");

答案 2 :(得分:0)

我的代码很好,我只需要导入URLSearchParams

import { Headers, Http, RequestOptions, RequestOptionsArgs, URLSearchParams } from '@angular/http';

之前我没有导入它,但我不知道为什么,但v代码没有给我任何错误。