如何以类似于Angular中的HttpHeaders的紧凑方式设置HttpParams [复制]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我对Angular很新,现在正在从“旧的”Http API升级到新的HttpClient API。

因此,我必须使用新的HttpHeaders和HttpParams,到目前为止工作正常。但我能找到的宣言示例对我来说似乎有点奇怪,因为它基本上归结为这一点。

let searchParams = new HttpParams();
searchParams = searchParams.append('query', query);
searchParams = searchParams.append('sort', sort);
searchParams = searchParams.append('order', order);

const headers = new HttpHeaders({
  'Content-Type': 'application/json',
  'Authorization': 'Bearer ' + user['sessionToken']
});

有没有办法以类似于HttpHeaders的方式声明HttpParams?我使用的方式是我在网上找到的唯一方法,经过广泛的尝试和错误似乎是唯一有效的方法。

我不是在问如何设置HttpParams,我想知道为什么HttpParams和HttpHeaders不能以相同的方式设置(在我的例子中设置HttpHeaders的方式,在一行中声明)。

angular angular2-http
1个回答
2
投票

Angular@5中,您可以像标题一样设置参数:

let searchParams = new HttpParams({
    fromObject: {
        query: query,
        sort: sort,
        order: order
    }
});

const modified = req.clone({params: searchParams});

或者您可以直接在请求中使用setParams方法:

const modified = req.clone({setParams: {'query': query, 'sort': sort, 'order': order}});

如果你好奇为什么HttpParamsHttpHeaders是不可变的,请检查这个答案Why do most classes of the HttpClient API define immutable objects?

© www.soinside.com 2019 - 2024. All rights reserved.