我刚刚对Angular 4应用程序和构建工具进行了两次重要的升级:
> @ angular / core ^ 4.1.3 => ^ 4.2.4(和/ http,/ forms等)
> tslint ^ 5.3.2 => ^ 5.4.3
我有一个服务,声明这样的选项:
@Injectable() export class WorkOrderService { private headers: Headers = new Headers({ 'Content-Type': 'application/json' }); private options: RequestOptions = new RequestOptions(this.headers); constructor(private http: Http) {} /* Methods ... */ }
以上现在不再验证tslint,抛出以下错误:
error TS2559: Type ‘Headers’ has no properties in common with type ‘RequestOptionsArgs’.
源(@ angular / http interface.d.ts:43)显然允许Headers作为RequestOptionsArgs:
/** * Interface for options to construct a RequestOptions,based on * [RequestInit](https://fetch.spec.whatwg.org/#requestinit) from the Fetch spec. * * @experimental */ export interface RequestOptionsArgs { url?: string | null; method?: string | RequestMethod | null; /** @deprecated from 4.0.0. Use params instead. */ search?: string | URLSearchParams | { [key: string]: any | any[]; } | null; params?: string | URLSearchParams | { [key: string]: any | any[]; } | null; headers?: Headers | null; body?: any; withCredentials?: boolean | null; responseType?: ResponseContentType | null; }
4.3 HttpClient的更新
在角度4.3中引入的与HttpClient
兼容的新语法是:
import { HttpClient,HttpHeaders } from "@angular/common/http"; private _options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };
不再有RequestOptions:使用新的immutable HttpParams
Map添加参数.
Pre 4.3 / Http
我刚刚注意到RequestOptions现在要求您将命名选项显式传递为对象,如:
headers: Headers = new Headers({ 'Content-Type': 'application/json' }); options: RequestOptions = new RequestOptions({ headers: this.headers });