你好。 我正在尝试使用新的HttpClient将响应映射到模型类。 但似乎我的回应永远不会最终拥有模型类中的函数。
我知道这不是正确的做法,但是如何将响应映射到模型类呢?
从我的Api服务获得:
listSimple(): Observable<Array<Airport>> {
return this.http.get<Array<Airport>>(this.airportUrl + 'list')
}
在组件中的使用:
getAirports(){
this.airportApi.listSimple().subscribe(
res => {
this.airportList = res;
console.log("Airport list: ", res);
},
err => {
//@TODO Incorporate global error handeling and remove this
console.error("An error occoured while fetching the airport list!");
});
}
模型类:
export interface Inms {
get_name:Function;
get_value:Function;
get_children:Function;
}
export class Airport implements Inms{
IATA:string;
name:string;
trips:number;
children:any;
constructor(){ }
public get_name() {
return this.name;
}
public get_value() {
return this.IATA;
}
public get_children() {
return this.children? this.children : null;
}
}
我使用函数get_children的结果是:
_v.context.$implicit.get_children is not a function
我的解决方案: 这就是我结束操作映射的方法,如果有更好的或替代的解决方案,请告诉我!
//Returns a simplifyed list of all airports
listSimple(): Observable<Array<Airport>> {
return this.http.get<Array<Airport>>(this.airportUrl + 'list')
.map(array => array
.map(airport => new Airport(airport.IATA, airport.name, airport.trips))
)
}
答案 0 :(得分:0)
为什么不呢?
export interface IAirport {
IATA:string;
name:string;
trips:number;
children:any;
}
// then
listSimple(): Observable<IAirport[]> {
return this.http.get<IAirport[]>(this.airportUrl + 'list')
}