如何格式化和显示从AngularFire返回的Firestore数据?

中秋7

我有一个简单的团队列表,首先我将每个团队都放在一个firebase文档中,并且在查询集合时可以很容易地用HTML显示它们*ngFor很简单的例子:

<ion-card *ngFor="let t of (team|async)" >
  <ion-card-header>
    <ion-card-title>name: {{t.name}} </ion-card-title>
      {{t.pic}}
      score = {{t.score}}
  </ion-card-header>
</ion-card>

然后,我决定使用地图类型(json对象)测试将所有团队放在一个Firebase文档中。但是现在*ngFor将无法正常工作。(我明白了为什么的本质,但无法解决):

这是数据库文档:

在此处输入图片说明

说这是新查询:

this.teams= this._db.collection('teams').doc("allteams").valueChanges();

然后,我尝试将响应设置为数组:(否则*ngFor会显示错误)

this.team= this.teams.pipe(map((res: Response) => {return [res]}));

然后,在HTML中,我只能访问一个值,例如:

<ion-card *ngFor="let t of (team|async)" >
  <ion-card-header>
    <ion-card-title>name: {{t.team1.name}} </ion-card-title>
  </ion-card-header>
</ion-card>

但我确实无法像以前那样展示:

<ion-card *ngFor="let t of (team|async)" >
  <ion-card-header>
    <ion-card-title>name: {{t.name}} </ion-card-title>
      {{t.pic}}
      score = {{t.score}}
  </ion-card-header>
</ion-card>

我知道响应只是一个数组,但是无法将其转换为有效的数组。

我也尝试过类似的方法:

this.team= this.teams.pipe(map((res: Response)=> {for(let r in res){return r}}));

但这只会CONSOLE.LOG: team1, team2, team3其他所有数据都不存在。

衷心感谢您的帮助!:)

抢劫犯

您的最后一次尝试非常接近,但是在这种情况下,您实际上仅返回了键(这是您观察到的行为)。

由于AngularFire在调用文档时仅返回原始文档值valueChanges,因此您可以像直接处理对象一样对其进行操作。由于要返回给定键的值,因此只需要将其从对象中拉出即可。

尝试这个:

this.team = this.teams.pipe(map(res => {
  return Object.keys(res).map(x => res[x]);
}));

此代码跨对象上的所有键进行映射,并返回这些键的所有值的数组。Angular / Ionic模板应该能够按照您期望的方式处理。

旁注:我已经切换到Object.keystslint喜欢为未过滤的抛出错误for x in obj

我也不太确定Response这里是什么,因此为了清楚起见,我省略了类型-此代码实际上不是类型相关的。

当然,上面的代码并没有保留密钥。如果要这样做,可以:

this.team = this.teams.pipe(map(res => {
  return Object.keys(res).map(x => {
    const output = res[x];
    output._key = x;
    return output;
  });
}));

只要确保您使用的属性(在本例中为_key)就不会在对象上存在,否则它将被覆盖:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从应用返回正确格式化的熊猫数据框?

来自分类Dev

如何格式化Pandas数据框的IPython html显示?

来自分类Dev

Redux + Apollo:如何规范和格式化响应数据?

来自分类Dev

如何使用 JavaScript 捕获和格式化表格数据?

来自分类Dev

如何格式化以显示前导零

来自分类Dev

如何重新格式化显示的日期?

来自分类Dev

格式化和显示访问数据库(WPF,C#)中的数据

来自分类Dev

如何格式化Django模板的数据?

来自分类Dev

如何格式化输入的数据并输出

来自分类Dev

如何格式化数据Rails

来自分类Dev

如何格式化和添加列?

来自分类Dev

EmberJS 2.7如何重组/重新格式化/自定义从商店返回的数据

来自分类Dev

C#尝试格式化datagridview数据并在格式化后通过循环返回

来自分类Dev

如何格式化JSON数据以在不同的div中显示结果对象

来自分类Dev

如何在 React 中显示由 Draft.js 格式化的数据?

来自分类Dev

如何使用Garmin ConnectIQ SDK格式化和显示长文本

来自分类Dev

使用R和Leaflet,如何使我的地图显示以逗号格式化的数字?

来自分类Dev

如何格式化和显示没有时区的日期?

来自分类Dev

如何在HTML和Javascript的动态列表中显示格式化的HTML文本

来自分类Dev

如何最好地显示Web API和客户端之间的格式化属性

来自分类Dev

如何使用RSS2JSON显示和格式化日期?

来自分类Dev

如何在瓶子模板中的列表中格式化和显示集合?

来自分类Dev

格式化数据绑定的DataGrid的显示属性

来自分类Dev

如何捕获和格式化输出嵌套格式标签?

来自分类Dev

如何在python中删除元组中的引号和括号以格式化数据

来自分类Dev

如何使用Shell脚本拆分和格式化数据输出?

来自分类Dev

在光子上格式化和显示时间

来自分类Dev

格式化和显示<hr>时出错

来自分类Dev

在各处显示和保存产品的格式化尺寸

Related 相关文章

  1. 1

    如何从应用返回正确格式化的熊猫数据框?

  2. 2

    如何格式化Pandas数据框的IPython html显示?

  3. 3

    Redux + Apollo:如何规范和格式化响应数据?

  4. 4

    如何使用 JavaScript 捕获和格式化表格数据?

  5. 5

    如何格式化以显示前导零

  6. 6

    如何重新格式化显示的日期?

  7. 7

    格式化和显示访问数据库(WPF,C#)中的数据

  8. 8

    如何格式化Django模板的数据?

  9. 9

    如何格式化输入的数据并输出

  10. 10

    如何格式化数据Rails

  11. 11

    如何格式化和添加列?

  12. 12

    EmberJS 2.7如何重组/重新格式化/自定义从商店返回的数据

  13. 13

    C#尝试格式化datagridview数据并在格式化后通过循环返回

  14. 14

    如何格式化JSON数据以在不同的div中显示结果对象

  15. 15

    如何在 React 中显示由 Draft.js 格式化的数据?

  16. 16

    如何使用Garmin ConnectIQ SDK格式化和显示长文本

  17. 17

    使用R和Leaflet,如何使我的地图显示以逗号格式化的数字?

  18. 18

    如何格式化和显示没有时区的日期?

  19. 19

    如何在HTML和Javascript的动态列表中显示格式化的HTML文本

  20. 20

    如何最好地显示Web API和客户端之间的格式化属性

  21. 21

    如何使用RSS2JSON显示和格式化日期?

  22. 22

    如何在瓶子模板中的列表中格式化和显示集合?

  23. 23

    格式化数据绑定的DataGrid的显示属性

  24. 24

    如何捕获和格式化输出嵌套格式标签?

  25. 25

    如何在python中删除元组中的引号和括号以格式化数据

  26. 26

    如何使用Shell脚本拆分和格式化数据输出?

  27. 27

    在光子上格式化和显示时间

  28. 28

    格式化和显示<hr>时出错

  29. 29

    在各处显示和保存产品的格式化尺寸

热门标签

归档