2017-04-04 101 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'})};