我们有一个离线项目,几页和一个自定义提供商。 提供者是request.ts,如下所示。问题是每次我们发布:离子服务--lab。编译实际上会失败(错误指向来自request.ts的http.post中的头文件),然后我们必须手动进入app.module.ts文件并保存它。然后一切都开始正常。
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/map';
@Injectable()
export class RequestProvider {
constructor(public http: Http) {
console.log('Hello RequestProvider Provider');
}
getSomeResponce(callBack) {
this.http.post(
"some.domain.net/some/service",
{ "argument1": "1", "argument2": "2"},
{ headers: { "Content-Type" : "application/json" } }
).toPromise()
.then(res => callBack(res));
}
}
app.module导入提供者:
import { RequestProvider } from '../providers/request/request';
这是我们第一次发布时遇到的错误:
Typescript Error类型'{headers:{“Content-Type”的参数: 串; }; }'不能赋值给类型的参数 'RequestOptionsArgs'。属性“标题”的类型不兼容。 输入'{“Content-Type”:string; }'不能分配给类型 “头”。对象文字只能指定已知属性,和 “内容类型”'在“标题”类型中不存在。
虽然问题不大,但这是一个烦恼,我担心它可能表明未来会有更大的问题。
答案 0 :(得分:0)
这是使用自定义http标头的正确方法
import { Http, Headers } from '@angular/http'; // import Headers
headers: Headers = new Headers(); // init variable headers
this.headers.set('Content-Type', 'application/json'); // set header
this.http.post(url, data, {headers : this.headers}) // use it in your request