Angular HttpClient - rxjs map - 到一个Type数组

时间:2018-02-01 11:54:30

标签: angular typescript rxjs

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

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;
        }));
}

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

基本上我想做的是:

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

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

1 个答案:

答案 0 :(得分:9)

如何从服务器实际发送数据?是json还是其他什么?如果是json,请尝试使用HttpClient参数中的responseType:'json'options的呼叫(see documentation)中指定该内容。

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))));
}