2017-04-04 126 views
57

我目前有一个tslint的问题,并希望有人能指出我在正确的方向。Angular2 - HTTP请求选项头文件

我想使用Angular2框架提供的HTTP发送HTTP GET请求。有了这个请求,我必须指定内容类型和承载认证令牌。我的代码

实施例:

let headers = new Headers(); 
let authToken = this._user.getUser().JWT; 
headers.append('Content-Type', 'application/json'); 
headers.append('Authorization', `Bearer ${authToken}`); 
let options = new RequestOptions({ headers: headers }); 

this._http.get('http://' + url '/', options) 
      .timeout(3000) 
      .subscribe(
       (res) => { 

这工作,然而,tslint抱怨并

“TS2345:类型的参数 '{头:集管;}' 不是分配给 类型'RequestOptionsArgs'属性'标题'的类型不兼容。类型'标题'不能分配给类型'标题'。 存在两个不同类型的名称,但它们是不相关的 属性'ke ys'在类型'标题'中缺少。“

我很感谢支持。

回答

173

更新

截至今日,@angular/http一直deprecated@angular/common/http应改为使用。所以使用http标头的最好方法是导入import { HttpHeaders } from '@angular/common/http';documentation)。

老答案

你应该导入Headers类型是import { Headers } from '@angular/http';

检查进口

+3

这就是它!我使用Phpstorm,通常很不错,清楚地告诉我我错过了一个依赖,但是这次没有。此外,我没有发现tslint消息非常明确。干杯:) – Zander17

+3

不知何故,即使你不导入它,也有一个Headers类。所以你必须确保你输入正确的(见上面的答案)才能使其正常工作。 – GoTo

+0

谢谢我的错误!非常感谢@bviale –

1

你必须更新标题:

let headers = {headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded'})};