【问题标题】:How to get data from an Object containing an Array in Angular 7如何从包含 Angular 7 中的数组的对象中获取数据
【发布时间】:2018-11-08 23:40:25
【问题描述】:

我在 Firebase 上创建了一个集合,从 API 返回的数据是这样的:

documents: Array[2]{
    0: name: "randomString",
        {fields: 
            {name: aName, id: 1}
            },
    1: name: "randomString",
        {fields: 
            {name: aName2, id: 2}
           }
    }

在我的前端,我有一个对象数组,我只想映射每个数组成员。当我尝试将来自 API 的响应分配给我的本地数组时,我显然得到了一个错误,因为它试图将一个对象发送到一个与我的本地数据模型不对应的数组中:

getData() {
    this.dataService.getData()
      .subscribe( res => this.localArray = res; )
  }

数据服务.ts

getData(): Observable<any> {
    return this.http.get(this.url).pipe(map(res => res.documents));
  }

如何使用 Angular 有效地映射它。请注意,“响应”已被弃用。 谢谢

【问题讨论】:

  • 能否也展示一下getData()的实现?

标签: angular angular7


【解决方案1】:

尝试使用res.documents。该数组位于您响应中的属性文档中

【讨论】:

    【解决方案2】:

    在你的服务中你应该写

    return this.http.get(YOUR_API_URL).pipe(map(response => response.documents));
    

    然后在您的组件中,您只需执行以下操作:

    getData() {
      this.dataService.getData().subscribe(response => {
        this.localArray = res;
      });
    }
    

    【讨论】:

    • 这几乎对我有用!但问题是这会将 Firebase 分配的随机“名称”映射到我的数据模型名称。我想要做的是从“字段”部分中提取属性并将其映射到我的本地对象。我已经更新了我的帖子以使其更清晰。谢谢
    猜你喜欢
    • 2021-02-07
    • 1970-01-01
    • 2022-10-22
    • 2021-09-14
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多