Angular 4.3 HttpClient - 如何正确使用HttpHeaders和拦截器?

时间:2017-08-25 23:43:49

标签: angular

我需要将标头发送到我的HttpRequest。

我已经在这里搜索过,我已经尝试了一些我找到的答案,但没有一个能够奏效。

标头没有发送到api,如果我检查A1, A2对象,它就不显示标题。那是我的代码:

clonedRequest

enter image description here

我错过了什么?

2 个答案:

答案 0 :(得分:1)

这是因为新HttpClient模块中的类的实例是不可变的。所以你需要重新分配你变异的所有属性。在您的情况下,这将转换为以下内容:

public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
  // Clone the request to add the new header.
  const headers = req.headers.set("ModuleId", this.dnnContext.moduleId).set("TabId", this.dnnContext.tabId);
  const clonedRequest= red.clone({
   headers: headers
  });

  // Pass on the cloned request instead of the original request.
  return next.handle(clonedRequest);
}

答案 1 :(得分:1)

我遇到过类似的问题&amp;找出你的第二个( TypeError:CreateListFromArrayLike在非对象上调用)问题,对于某些人来说 如果您传递数字类型的原因(它有类型检查,但是如果var类型为db2set DB2_COMPATIBILITY_VECTOR=830 db2stop db2start db2 create database mydb db2 connect to mydb db2 "create table taches(....)" db2 "create table pointages(...)" db2 -tvf FCT_UPDATE_POINTAGE.sql 它允许&amp;对我来说就是这种情况)标题中的值(anyModuleId在您的情况下)它抛出此错误,以便您可以转换它 传递时串起来像:

TabId

还在你的github issue上回复了。