代码之家  ›  专栏  ›  技术社区  ›  Eli

如何计算角度6中表列的和?

  •  0
  • Eli  · 技术社区  · 6 年前

    我有一个表,它根据用户选择动态地开始过滤(管道)。

    我需要在底部输入一个摘要行,显示item.total列的总和,这是代码,实现它的最佳方法是什么?

      <tbody>
          <tr class="newLine" *ngFor="let item of records | filter:profile | location:selectedRegion ">
            <td scope="row">{{item.name}} </td>
            <td scope="row">{{item.profile}} </td>
            <td scope="row">{{item.location}} </td>
            <td scope="row">{{item.numOfTags}}</td>
          </tr>
          <tr>{{total numOfTags??}}</tr>
      </tbody>
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Mohammad Reza Farahani    6 年前

    创建一个新的筛选管道,用当前筛选计算总和

    import { Pipe, PipeTransform } from '@angular/core';
    @Pipe({
      name: 'filtercount'
    })
    export class FilterPipe implements PipeTransform {
      transform(items: any[], searchText: string): any[] {
        if(!items) return [];
        if(!searchText) return items;
    searchText = searchText.toLowerCase();
    return items.filter( it => {
          return it.name.toLowerCase().includes(searchText);
        }).reduce((a, b) => a.total + b.total, 0);
       }
    }
    

    像这样使用

    {{records | filtercount:profile}}
    
        2
  •  1
  •   Mohammad Reza Farahani    6 年前

    我发现了另一种以更好的性能复制代码的方法,代码如下:

    <div    *ngFor="let item of records | yourfilterChain;let last=last;let sum=ngForOf.reduce((a,b)=>a+b,0)" >
         {{item}}
         <div *ngIf="last">{{sum}} </div>
    </div>
    

    可以使用ngfor中的箭头函数计算筛选结果的和