Angular:HttpRequest.clone()-params和setParams之间有什么区别?
我有一个拦截器:Angular:HttpRequest.clone()-params和setParams之间有什么区别?,angular,typescript,http,httprequest,Angular,Typescript,Http,Httprequest,我有一个拦截器: intercept(request, next) { const _id = 1 const _token = "foo" return next.handle(request.clone({ setParams: { user_id: _id, user_token: _token } }); } 我注意到不是setParams,而是一个params字段 对于该类的Angular网站文档没有深入了解。它显示他们在那里,但
intercept(request, next) {
const _id = 1
const _token = "foo"
return next.handle(request.clone({
setParams: {
user_id: _id,
user_token: _token
}
});
}
我注意到不是setParams
,而是一个params
字段
对于该类的Angular网站文档没有深入了解。它显示他们在那里,但没有任何信息
params
是硬覆盖吗?setParams
是向请求追加额外的Key->Value
对的方法吗?该方法提供了一个重载,支持传递更新
对象:
clone(update: { headers?: HttpHeaders; reportProgress?: boolean;
params?: HttpParams; responseType?: "arraybuffer" | "blob" | "text" | "json";
withCredentials?: boolean; body?: T; method?: string; url?: string;
setHeaders?: { ...; }; setParams?: { ...; }; }): HttpRequest<T>
setParams
将添加到现有的params
。另一方面,params
覆盖现有的params
clone(update: {
headers?: HttpHeaders,
reportProgress?: boolean,
params?: HttpParams,
responseType?: 'arraybuffer'|'blob'|'json'|'text',
withCredentials?: boolean,
body?: any|null,
method?: string,
url?: string,
setHeaders?: {[name: string]: string | string[]},
setParams?: {[param: string]: string};
} = {}): HttpRequest<any> {
// For method, url, and responseType, take the current value unless
// it is overridden in the update hash.
const method = update.method || this.method;
const url = update.url || this.url;
const responseType = update.responseType || this.responseType;
// The body is somewhat special - a `null` value in update.body means
// whatever current body is present is being overridden with an empty
// body, whereas an `undefined` value in update.body implies no
// override.
const body = (update.body !== undefined) ? update.body : this.body;
// Carefully handle the boolean options to differentiate between
// `false` and `undefined` in the update args.
const withCredentials =
(update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;
const reportProgress =
(update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;
// Headers and params may be appended to if `setHeaders` or
// `setParams` are used.
let headers = update.headers || this.headers;
let params = update.params || this.params;
// Check whether the caller has asked to add headers.
if (update.setHeaders !== undefined) {
// Set every requested header.
headers = Object.keys(update.setHeaders)
.reduce((headers, name) => headers.set(name, update.setHeaders ![name]), headers);
}
// Check whether the caller has asked to set params.
if (update.setParams) {
// Set every requested param.
params = Object.keys(update.setParams)
.reduce((params, param) => params.set(param, update.setParams ![param]), params);
}
// Finally, construct the new HttpRequest using the pieces from above.
return new HttpRequest(
method, url, body, { params, headers, reportProgress, responseType, withCredentials, });
}