我正在迁移我的 Angular 应用程序以现在使用新的 HttpClient,但我遇到了一些问题,以实现与 Http 相同的结果。希望你们能帮帮我。
所以这就是我对 Http 所做的事情:
getAll() {
return this.http.get(environment.API_DOMAIN + environment.CURRENCY_API_URL).map(res => {
let response: ICurrenciesResponse = <ICurrenciesResponse> res.json();
response.result = <Currency[]> res.json().result.map(service => {
return new Currency(<ICurrency> service);
});
return response;
});
}
使用接口 ICurrenciesResponse 输入响应,女巫看起来像这样:
import { IGenericResponse } from '../igeneric-response';
import { Currency } from '../../classes/currency';
export interface ICurrenciesResponse extends IGenericResponse {
result?: Currency[]
}
如您所见,该接口扩展了 IGenericResponse 并由 Currency 数组组成,它是一个已定义的类。为了正确设置这个数组,我必须做第二张地图,然后我创建一个新的货币对象。这非常有效,到目前为止我对这种方法非常满意。
知道,当我迁移到 HttpClient 时,我有这个:
getAll(): Promise<ICurrenciesResponse> {
return this.http
.get<ICurrenciesResponse>(environment.API_DOMAIN + environment.CURRENCY_API_URL)
.toPromise();
}
但是知道我的货币数组没有正确设置为货币数组。HttpClient 不是应该根据定义为 get 方法上的类型的接口来转换数据吗?如果没有,实现与 Http 相同的最佳方法是什么?使用 subscribe() 而不是 toPromisse() 并以我已经在做的相同方式处理数据?
提前致谢!