【问题标题】:Angular HttpClient - rxjs map - to an array of TypeAngular HttpClient - rxjs 映射 - 到类型数组
【发布时间】:2018-02-01 20:07:49
【问题描述】:

我有以下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;
        }));
}

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

基本上我想做的是:

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

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

【问题讨论】:

    标签: angular typescript rxjs


    【解决方案1】:

    数据实际上是如何从服务器发送的?是json 还是别的什么?如果是json,请尝试在HttpClient 的调用(see documentation)中使用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))));
    }
    

    【讨论】:

    • 能否请您看一下stackoverflow.com/questions/51854143/… 我想我面临着类似的问题,但我的代码在某些条件下编译,而不是在某些条件下编译。问题在ArrayBuffer 附近,但我不知道为什么它有时会编译。
    猜你喜欢
    • 2018-12-14
    • 2019-11-27
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 2021-12-04
    相关资源
    最近更新 更多