Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2-HTTP请求选项标头_Angular_Http_Typescript_Tslint - Fatal编程技术网

Angular2-HTTP请求选项标头

Angular2-HTTP请求选项标头,angular,http,typescript,tslint,Angular,Http,Typescript,Tslint,我目前对tslint有意见,希望有人能给我指出正确的方向 我正在尝试使用Angular2框架提供的HTTP发送HTTP GET请求。对于这个请求,我必须指定内容类型和承载身份验证令牌 我的代码示例: let headers = new Headers(); let authToken = this._user.getUser().JWT; headers.append('Content-Type', 'application/json'); headers.append('Authorizati

我目前对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) => {
然而,这是可行的,tslint抱怨说

“TS2345:类型为“{headers:headers;}”的参数不可分配给 类型为“RequestOptionsArgs”的参数。属性类型为“Header” 不兼容。类型“Headers”不能分配给类型“Headers”。 存在两种具有此名称的不同类型,但它们不相关。 类型“Headers”中缺少属性“keys”。“


感谢您的支持。

更新

从今天起,
@angular/http
已被禁用,应改用
@angular/common/http
。因此,使用http头的最佳方法是从“@angular/common/http”导入
import{HttpHeaders}()

旧答案

您应该导入的
Headers
类型是从'@angular/http'导入{Headers}


检查您的导入

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

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

角度5的更新

import { RequestOptions } from '@angular/http';
我在正确答案的评论中发现了这一点,所以如果这对某人有帮助,祝你好运


文档:

//内容类型Json的标题示例

import { Http, Headers, RequestOptions } from '@angular/http';

const Url = 'http://localhost:3000/';
const headers = new Headers;
const body = JSON.stringify({
title: "data" 
});
headers.append('Content-Type', 'application/json');
this.http.post(Url, body, { headers: headers })
.pipe(map((res => res)));

就这样!我使用的是Phpstorm,它通常非常好,清楚地告诉我,我错过了一个依赖项,但这次没有。此外,我觉得tslint消息不是很清楚。干杯:)不管怎么说,有一个Headers类,即使你不导入它。因此,为了使Angular 5工作,您必须确保导入正确的一个(请参见上面的答案)@Abhi它在文档中说Headers已被弃用,我们应该使用@angular/common/http中的HttpHeaders。但那真的不管用。。。想法?@Donkeybana我发现作为一个很好的参考,经济学家对选项和标题都使用const而不是let。这是不推荐的。是的,它看起来在过去几天有所改变。检查文档,现在是从'@angular/http'导入{RequestOptions}