当前位置: 首页 > 知识库问答 >
问题:

使用*ngFor从对象键获取对象值

段干楚青
2023-03-14

我有以下数据库结构:

对于如何从April和May键获取对象的值,我有点困惑。使用*ngFor在对象上迭代时。我将所有关键点都作为对象。我试图使用keyvalue,但不起作用。

完整代码:

  orderhistory: AngularFireList<any>;
  keyArray: any[]; // to use with *ngFor

  ngOnInit() {

    this.orderhistory = this.af.list("/orderhistory")
    this.orderhistory.snapshotChanges()
    .pipe(
      map(changes =>
        changes.map(c => ({ $key: c.payload.key, ...c.payload.val() }))
      ), tap(val => this.keyArray = []), map(data => {
        data.forEach((row, dataObj) => {
          Object.keys(row).forEach((r, objIndex) => {
            if (r === '$key') {
              this.keyArray.push({ row: row['$key'], 'value': [] });
            } else {
                this.keyArray[dataObj]['value].push({ 'subRowKey': r, 'subRowValue': row[r] })
            }
            return row;
          })
          return row;
        })
        onsole.log(this.keyArray)

        return data;
      })
    ).subscribe((data: any) => {

        console.log(data)
      });
  }

Html

    <tbody *ngFor="let row of keyArray; let i = index">
        <tr role="row"  *ngFor = "let subRow of row.value |keyvalue; ">
            {{subRow.subRowValue|json}}
        </tr>
    </tbody>

输出

如上所述,我的数据现在位于subRowValue下。那么,我如何避免或访问密钥以获取数据呢?是否可以使用| keyvalue

共有1个答案

易英奕
2023-03-14

你很接近了。使用keyvalue管道时,需要显式指定keyvalue。根据您的控制台日志,似乎在*ngFor中存在变量名称的混淆。请尝试以下方法

<tbody *ngFor="let value of keyArray.value; let i = index">
  <tr role="row"  *ngFor = "let subRow of value.subRowValue | keyvalue; ">
    {{ subRow.value | json }}
  </tr>
</tbody>
 类似资料:
  • 如何使用动态获取和?经过广泛的搜索,我找到了使用管道的想法,但我不知道如何去做。在Angular2中是否有任何内置管道可以做同样的操作?

  • 初学者问题:我有一个hashmap,它将整数数组存储为值。每个值的键是一个由两个整数(坐标)组成的对象。 我的问题是:如何根据对象中的两个坐标(我的“键”)从hashmap检索值? 我的协和类(在Eclipse的一点帮助下): 构建Hashmap: 如果我想访问坐标12,13上的数组,如何检索它?是否需要迭代(我希望不是,我想添加100000个坐标,当然要快速访问)。 我希望这能在某种程度上符合

  • 我试图从我的对象中得到一些东西,但我写的东西不起作用。有什么建议吗?谢谢

  • 问题内容: 我从网络服务器获取以下JSON字符串。 我想要公开HTML中的JSON,我尝试了以下操作,但未填写字段,我也收到了“无异常”,因此我很难找出其不起作用的原因。 TS 的HTML 问题答案: 您可以使用来从对象获取键(需要IE AFAIK中的polyfill)

  • 问题内容: 我如何获得后续的密钥名称?例如,我要“ button1”和“ button2”? 我尝试使用,尽管这没有用。 问题答案: 如果您稍微修改一下措辞,则可能会更好地理解: 请注意,您要遍历对象的属性,并在每个后续周期中使用对每个对象的引用。 MSDN说到以下内容: 在循环的每次迭代之前,都会为变量分配对象的下一个属性名称或数组的下一个元素索引。然后,您可以在循环内的任何语句中使用它来引用对

  • 问题内容: 我是JSON的新手。因此,如果这是一个非常基本的疑问,请不要责骂我。我有一个JSON对象参考,我想获取Key(对象只有一个“键值对”)。如何在Java中获得它? 问题答案: 您可以用来获取所有密钥。然后,您可以遍历密钥以从中获得第一个密钥,例如: