[英]How to map object array to my type array
我有一堂課:
export class Stuff {
id: string;
namd: string;
}
使用angular < 4.3
我有這個電話:
getStuff(): Observable<Stuff[]> {
return this.http.get('api-url-here/stuff')
.map((data: Response) => {
return data.json()
.map((item: any) => {
return {
id: item.id,
name: item.name
};
});
})
}
使用angular >= 4.3
我將其更改為:
getStuff(): Observable<Stuff[]> {
return this.http.get<Stuff[]>('api-url-here/stuff')
.map((data: any) => {
return data
.map((item: any) => {
return {
id: item.id,
name: item.name
};
});
})
}
我正在從我的api收到一系列類似的東西。
[
{"id":1,"name": "name" }
]
從上面的代碼示例中可以看到,我必須將數據map
兩次以得到我的類型形狀( Stuff[]
)。 有沒有更好的方法來做到這一點與angular 4.3+
?
您正在新的HttpClientModule
中使用類型化的響應,因此在第一個map
您的結果已被解析。
getStuff(): Observable<Stuff[]> {
return this.http.get<Stuff[]>('api-url-here/stuff');
}
應該管用。 接着
SomeStaffService.getStuff().subscribe(staff => console.log(staff));
更新:
在這種情況下,您將能夠以兩種方式處理錯誤。 在您的服務之外
SomeStaffService.getStuff().subscribe(
staff => console.log(staff),
(err: HttpErrorResponse) => {
if (err.error instanceof Error) {
console.log("Client-side error occured.");
} else {
console.log("Server-side error occured.");
}
}
);
或者,您可以直接在您的服務中訂閱並在其中捕獲錯誤。 請參考文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.