我有一个与URLSearchParams()
一起出现的奇怪问题,只有在定义var search
时才会起作用(即如果我将变量名称更改为var otherName
)它就不起作用!!
但是,出于某种原因,只有在名称为search
时才有效!!这根本不合逻辑。
对这里发生的事情有什么看法?
constructor(http) {
this.http = http;
this.genre = null;
this.dishes = null;
//this one works fine
var search = new URLSearchParams();
search.set('order', '-ordersNo');
//Here is the issue (to make it work, I need to remove the previous search declaration, and rename the below var limit to search)
var limit = new URLSearchParams();
limit.set('limit', '2');
this.http.get('https://example.com/classes/Mn', { limit }).subscribe(data => {
this.dishes = data.json().results;
});
this.http.get('https://example.com/classes/Genre',{ search }).subscribe(data => {
this.genre = data.json().results;
});
答案 0 :(得分:1)
我猜你其实想要这样:
{ search: search }
//and
{ search: limit }
http get方法的 options
参数必须具有以下签名:
export interface RequestOptionsArgs {
url?: string;
method?: string | RequestMethod;
search?: string | URLSearchParams;
headers?: Headers;
body?: string;
}
但{limit }
实际上与{ limit: limit }
相同。
答案 1 :(得分:1)
事实上,它是JavaScript的捷径:{ search }
相当于{ search: search }
和{ limit }
相当于{ limit: limit }
。
它适用于第一种情况,因为Angular2期望search
属性来定义查询参数。如果您要使用limit
变量,则无法使用此快捷方式,您需要使用以下内容:{ search: limit }
。