我正在使用mdPaginator:
@android:style/Widget.Holo.CompoundButton.RadioButton
并有一个selectPage函数:
<md-paginator
[length]="mdPag.length"
[pageSize]="mdPag.pageSize"
[pageSizeOptions]="mdPag.pageSizeOptions"
(page)="selectPage($event)">
</md-paginator>
而且,我的httpClient服务执行此操作:
selectPage(event) {
// [A]
// let params: URLSearchParams = new URLSearchParams
// params.set("page", event.pageIndex+1)
// params.set("per_page", event.pageSize)
// this.httpClient
// .get("/proxy/api/team/order_list", params)
// .map(res => res.json())
// ...
// [B]
// this.httpClient
// .get(`/proxy/api/team/order_list?page=${event.pageIndex+1}&per_page=${event.pageSize}`)
// .map(res => res.json())
// ...
// [C]
this.httpClient
.get(`/proxy/api/team/order_list?page=${event.pageIndex+1}&per_page=${event.pageSize}`)
.toPromise()
}
我不知道为什么,但只有像[C]这样的写作才能奏效。我的意思是,在网络上,我可以看到我的请求网址是正确的,当[A] / [B],请求网址是&#39; / proxy / api / team / order_list&#39;时,似乎他们没有得到参数虽然我可以在HttpClient的get函数中控制它。
答案 0 :(得分:0)
我在A,B和C之间看到的一个巨大差异是他们返回了非常不同的类型。请在您的函数中添加一个返回类型,IDE会告诉您(我希望您使用的是智能IDE,如果没有,那么Visual Studio Code或IntelliJ都是很好的选择,会告诉您打字稿是错误的)。一个非常好的habbit总是明确地写类型(变量,参数,函数参数,返回类型等)。
所以我的意思是C返回Promise<Response>
(定义{{3}}),而A和B都返回Observable<ResponseJsonType>
,其中ResponseJsonType
是返回的JSON对象的类型在你的http响应。我不知道你如何使用selectPage(event)
的返回对象,但这可能是一个问题。