【发布时间】:2018-05-20 18:22:33
【问题描述】:
我正在尝试为 restservice 创建新的包装器,我正在尝试将 angular 4 移动到 5 并升级相同的服务。我收到如下错误。如果我将Observable<Response> 更改为Observable<HttpResponse> 也会出现错误:
“HttpHeaders”类型的参数不能分配给“{ headers?: HttpHeaders | { [标题:字符串]:字符串 |细绳[]; };观察?:“身体”;参数?:Ht...'。
属性 'headers' 在 'HttpHeaders' 类型中是私有的,但在 '{ headers 类型中不是私有的?:HttpHeaders | { [标题:字符串]:字符串 |细绳[]; };观察?:“身体”;参数?:
下面是代码。
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { HttpClient, HttpRequest, HttpHeaders, HttpResponse } from '@angular/common/http';
@Injectable()
export class httpService {
private requestHeaders: HttpHeaders;
constructor(private _http: HttpClient) {
this.requestHeaders = new HttpHeaders();
this.requestHeaders.append('Content-Type', 'application/json');
this.requestHeaders.append('Accept', 'application/json');
}
post(url: string, requestData?: any): Observable<Response> {
return this._http.post(url, requestData, this.requestHeaders);
}
}
上面是通过使用{headers: this.requestHeaders}修复的
但是return this._http.post(url, requestData, this.requestHeaders); 行会抛出类似的错误
Type 'Observable<ArrayBuffer>' is not assignable to type 'Observable<Response>'.
Type 'ArrayBuffer' is not assignable to type 'Response'.
Property 'body' is missing in type 'ArrayBuffer'.
【问题讨论】:
-
没有
Observable<Response>作为httpClient.get的返回类型。您可以使用Observable<any>或Observable<HttpResponse<any>>。 -
这是一个http.post方法
-
它们具有相同的返回类型(甚至它们的重载)。
-
Observable
> 不能正常工作。
标签: angular typescript