Angular HttpClient - rxjs map - to an array of Type



我有以下HttpClient.post调用,它返回一个对象数组。

import { map } from 'rxjs/operators/map';
public getArray(profileId: number): Observable<any> {
    return this.http.post("/api/url", postObject, HttpSettings.GetDefaultHttpRequestOptions())
        .pipe(map(data => { 
          console.log(data); // logs (2) [{…}, {…}]
          return data;
        }));
}

我需要实例化一个对象数组。我不能只键入断言,因为我需要Thing构造函数来解析一些json和其他

基本上我想做的是:

.pipe(map(data => { 
      console.log(data); // logs (2) [{…}, {…}]
      return data.map(v => new Thing(v));
    }));

但是我不能(据我所知(,因为data属于 ArrayBuffer 型并且不可迭代。我怎样才能做到这一点?

数据实际上是如何从服务器发送的?是json还是别的什么?如果是json请尝试在 HttpClient 的调用中使用 options 参数中的responseType:'json'指定它(请参阅文档(。

import { map } from 'rxjs/operators/map';
public getArray(profileId: number): Observable<Thing[]> {
    var options = HttpSettings.GetDefaultHttpRequestOptions();
    options.responseType = 'json';
    return this.http.post("/api/url", postObject, options)
        .pipe(map(data => data.map(v => new Thing(v))));
}

最新更新