Angular2 Http POST头参数类型错误

时间:2017-07-08 13:15:42

标签: angular http header

此服务应该对我的PHP后端api执行HTTP post请求,但是ng2不能编译项目,它会抛出以下错误:

  

login-service.ts(25,9)中的错误:类型' {headers:Headers; }'不能分配给' RequestOptionsArgs'类型的参数。     财产类型'标题'是不相容的。       输入'标题'不能分配类型'标题'。存在两种具有此名称的不同类型,但它们是不相关的。         物业'钥匙'类型' Headers'

中缺少

我的代码段如下:

import { HttpModule }     from '@angular/http';
import { Injectable }     from '@angular/core';
import { Http }           from '@angular/http';
import { Response }       from '@angular/http';
import { Headers }        from '@angular/http';

@Injectable()
export class LoginService {
  constructor(private http: Http) {

  }
  login(username, password){
    var body = 'foo=bar&foo1=bar1';
    var headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');

    this.http
    .post('http://127.0.0.1/server.php', body, { headers: headers })
    .subscribe((data:Response) => {
       let res = data.text();
       console.log('Result: ',res);
     }, error => {
       console.log('Error: ', JSON.stringify(error.json()));
     });
  }
}

此代码在不同的ng2应用程序中完美运行。

2 个答案:

答案 0 :(得分:3)

我有同样的问题,在导入中添加Headers就可以了(谢谢Subsh Ishfaq)

从" @ angular / http";

导入{Http,Headers}

答案 1 :(得分:2)

你必须使用:

let options = new RequestOptions({ headers: headers });

更新了登录方法:

 login(username, password){
    var body = 'foo=bar&foo1=bar1';
    var headers = new Headers();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    let options = new RequestOptions({ headers: headers });
    this.http
    .post('http://127.0.0.1/server.php', body, options)
    .subscribe((data:Response) => {
       let res = data.text();
       console.log('Result: ',res);
     }, error => {
       console.log('Error: ', JSON.stringify(error.json()));
     });
  }