我正在尝试向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);
}
答案 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代码没有给我任何错误。