【问题标题】:Angular 2 summary of ngFor values (numbers)ngFor 值(数字)的 Angular 2 摘要
【发布时间】:2019-05-09 14:17:17
【问题描述】:

我有一种情况,我需要为每个team task 收集所有pt(数量)(团队任务是动态的并且来自数据库)。

TS:

tasks;
  getTeams(){
    this.db.list(`projects/${this.auth.userId}/${this.key}/teams`).snapshotChanges().pipe(
      map(changes =>
        changes.map(c => ({ key: c.payload.key, ...c.payload.val() }))
      )
    ).subscribe((data) => {
      console.log(data);
     this.tasks = data;
    }  )}

HTML:

  <div *ngFor="let t of tasks">
        <p *ngFor="let pt of objectValues(t.tasks)">{{pt.pt}}</p>
      </div>

我的 firebase 数据库照片中两个 ngFors 的解释:

输出:

我希望每个TEAM 的输出只是所有pt 的摘要,如何实现?

例如:

正面:10pt (5 + 5)

Backas : 5pt (5)

添加console.log(data)的控制台日志:

【问题讨论】:

    标签: javascript angular typescript firebase firebase-realtime-database


    【解决方案1】:

    如果我理解正确,你想总结每个任务的分数。您可以使用 Array.reduce 来计算:

    脚本

    getTeamPoints(team) {
      return Object.values(team.tasks).reduce((total, task) => total + parseInt(task.pt), 0);
    }
    

    注意:上面的脚本可能应该有它的变量类型。

    查看

    <div *ngFor="let team of teams">
      {{team.name}}: {{getTeamPoints(team)}} points
    </div>
    

    【讨论】:

    • *每个团队,因为每个任务只有一个pt值
    • @AndriusL。刚刚也修正了一个错字。
    • 现在:Frontas:055 分 Backas:05 分 Tetas:01516 分
    • 我认为这不是摘要,它只会在数字附近添加数字
    • 是的,将所有值更改为数字,效果很好!
    猜你喜欢
    • 2017-09-20
    • 2017-06-29
    • 1970-01-01
    • 2018-10-20
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    相关资源
    最近更新 更多