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

Angular 无法使用http.get发送参数,angular,typescript,Angular,Typescript,我正在尝试将页码和页面大小发送到webapi, 但是没有传递任何参数,我已经在vs代码中调试了应用程序,pagingModel将pageSize和PageNumber作为成员,它们都有值,但是当我打开chrome开发工具时,请求url中没有参数 我的代码有问题吗 getTasks(pagingModel: IPagingModel): Promise<TaskList> { const url = this.taskUrl; const params = new UR

我正在尝试将页码和页面大小发送到webapi, 但是没有传递任何参数,我已经在vs代码中调试了应用程序,pagingModel将pageSize和PageNumber作为成员,它们都有值,但是当我打开chrome开发工具时,请求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);
  }

我认为这不是最好的办法。但也通过这种方式,工作

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

}

您可以在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
我们正在通过链接集合来构建HTTPParams对象 因为HTTPParams是不可变的,它的API方法 不要引起物体突变。相反,对set的调用将返回一个新的 包含新值属性的HttpParams对象

下面的方法行不通

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

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

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

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

搜索:params,params:params-调用参数名及其变量params是一条危险的道路。只要尝试使用get中的所有可用选项传递它,这是可行的,但我不确定这是否是最好的方法。@Arash您的代码对我有效。我只是没有传递参数键,只传递了搜索键。似乎params key不是有效的参数。new RequestOptions{search:params};。也不明白为什么它不适用于you@angular/公共/http;没有导出的成员HttpParams@Arash您必须使用http客户机模块而不是http模块,将导入添加到NgModuleName错误的导入数组中的HttpClientModule,@angular/common/htt没有导出的memebr httpclientmoduley您正在使用angular v4或v2?@angular/cli:1.2.6节点:6.9.1操作系统:win32 x64@angular/animations:4.3.4@angular/common:4.3.4@angular/core:4.3.4@angular/forms:4.3.4@angular/platform浏览器:4.3.4@angular/platform浏览器动态:4.3.4@angular/路由器:4.3.4@angular/cli:1.2.6@angular/编译器cli:4.3.4@angular/语言服务:4.3.4