Angular 文档说:
响应正文不会返回您可能需要的所有数据。有时服务器会返回特殊的标头或状态代码来指示某些条件,并且可能需要检查这些条件。为此,您可以告诉 HttpClient 您想要完整的响应,而不仅仅是带有观察选项的正文:
http
.get<MyJsonData>('/data.json', {observe: 'response'})
.subscribe(resp => {
// Here, resp is of type HttpResponse<MyJsonData>.
// You can inspect its headers:
console.log(resp.headers.get('X-Custom-Header'));
// And access the body directly, which is typed as MyJsonData as requested.
console.log(resp.body.someField);
});
但是当我尝试这样做时,我得到一个编译时错误(虽然没有运行时错误,但按预期工作):
错误 TS2345:类型参数 '{ headers: HttpHeaders; 观察:字符串;}' 不能分配给类型为 '{ headers?: HttpHeaders | { [标题:字符串]:字符串 | 细绳[]; }; 观察?:“身体”;参数?:Ht...'。属性“观察”的类型不兼容。类型 'string' 不能分配给类型 '"body"'。
为什么?我用"@angular/http": "^5.1.0"
这是我的代码版本:
login(credentials: Credentials): Observable<any> {
const options = {
headers: new HttpHeaders({'Content-Type': 'application/json'}),
observe: 'response'
};
return this.httpClient.post<any>(`${environment.USER_SERVICE_BASE_URL}`,
{'username': credentials.username, 'password': credentials.password}, options)
.map((res) => ...