簡體   English   中英

如何將對象數組映射到我的類型數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM