Angular2 - HTTP RequestOptions HEADERS

Zan*_*r17 73 http typescript tslint angular

我目前对tslint有一个问题,希望有人能指出我正确的方向.

我正在尝试使用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) => {
Run Code Online (Sandbox Code Playgroud)

然而,这是有效的,tslint抱怨说

"TS2345:类型'{headers:Headers;}'的参数不能分配给'RequestOptionsArgs'类型的参数.属性'headers'的类型是不兼容的.类型'Headers'不能分配给'Headers'类型.两种不同的类型存在此名称,但它们不相关."标题"类型中缺少属性"键".

我很感谢这种支持.

bvi*_*ale 201

更新

截至今天,@angular/http已被弃用,@angular/common/http应该改为使用.因此,使用http标头的最佳方法是导入import { HttpHeaders } from '@angular/common/http';(文档).

老答案

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

检查你的进口

  • 就是这样!我正在使用Phpstorm并且通常非常好并清楚地告诉我,我错过了依赖,但这次没有.此外,我没有发现tslint消息非常清楚.干杯:) (3认同)
  • 不知何故,即使您不导入它,也会有一个Headers类.因此,您必须确保导入正确的(请参阅上面的答案)才能使其正常工作. (3认同)
  • 对于Angular 5,这帮助我从'@ angular/http'导入{Headers,RequestOptions};`[文档](https://angular.io/api/http/RequestOptions) (3认同)

小智 8

您必须通过以下方式更新标头:

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


Val*_*Rob 5

Angular 5的更新

import { RequestOptions } from '@angular/http';
Run Code Online (Sandbox Code Playgroud)

我在正确答案的评论中找到了这个,所以如果这有助于某人,祝你好运.

文档:https://angular.io/api/http/RequestOptions

  • 这已被弃用. (2认同)