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

Zze*_*Zze 6 rxjs typescript angular

我有以下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;
        }));
}
Run Code Online (Sandbox Code Playgroud)

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

基本上我想做的是:

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

但是我不能(据我所知)因为data是Type ArrayBuffer而且不可迭代.我怎样才能做到这一点?

Igo*_*gor 9

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

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))));
}
Run Code Online (Sandbox Code Playgroud)