【发布时间】:2019-06-30 06:26:19
【问题描述】:
我想获得我的旅行,这是我从 Angular 中的 API 得到的回应。
我从后端得到:
{
"trips": [
{
"id": 0,
"name": "string",
"startDate": "2019-06-30T06:05:48.006Z",
"endDate": "2019-06-30T06:05:48.006Z",
"description": "string",
"roomSharing": true,
"countries": [
{
"id": 0,
"name": "string",
"code": "string"
}
],
"languages": [
{
"id": 0,
"name": "string",
"code": "string"
}
]
}
]
}
这很好,但我在客户端遇到了问题。 这是我的旅行代码:
getTrips(): Observable<Trip[]> {
return this.http.get<Trip[]>(this.apiUrl + '/Trip/Get')
.pipe(
tap(_ => console.log('fetched trips')),
retry(1),
catchError(this.handleError),
map(data => {
return data;
})
);
}
在我的组件中我有:
loadTrips() {
return this.rest.getTrips()
.subscribe((data) => {
this.trips = data;
console.log(this.trips);
}
, err => console.log(err));
}
我想在这样的模板中获得旅行:
<div class="card mb-3 trip" *ngFor="let trip of trips">
但我必须喜欢:
<div class="card mb-3 trip" *ngFor="let trip of trips.trips">
那么,问题是如何映射我的响应以获取 Trip 数组而不是 Array of Trips 数组?
【问题讨论】:
-
如果
trips有一个trips属性,那么它就不是Trip[]。如果您从一个实际表示数据的接口开始,并键入 loadTrips 的返回值,编译器可以提供更多帮助。我建议启用 TS 严格模式以防止隐式任何。
标签: javascript angular typescript observable