*ngFor 中的 Angular 4 计算总值之和

标签 angular

<分区>

我正在 Angular 4 中制作一个小应用程序, 我想在遍历 *ngfor 时显示总值的总和。

HTML代码

<ul *ngFor="let hero of heroes;">
    <li>{{hero.name}}  <span>{{hero.price*hero.qty}}</span></li>
</ul>
<ul>
     <li>Total <span>{{total}}</span></li>
</ul>

组件

 total:number;
 heroes: Hero[];
 ngOnInit():void 
 {
 this.heroService.getnewHeroes()
 .then(heroes => {this.heroes = heroes});
 }

服务

 getnewHeroes(): Promise<Hero[]> 
  {
     return this.http.get('api/heroes').toPromise()
     .then(response => response.json().data as Hero[])
  }

我想要如下输出

abc 500*2

xyz 200*5


总计 2000

最佳答案

  • Component 中计算您的总数并将其分配给新属性。不要尝试在 ngFor 循环内进行求和计算,这不是它的设计目的。
  • 显示 ngFor 之外的总数。
  • 您还可以在要重复的元素上使用 *ngFor,在本例中为 li。如果你把它放在 ul 上,那么你将为每个英雄创建一个新的无序列表,而不是一个新的列表项 inside 然后是无序列表标签。

组件代码:

heroes: Hero[];
total: number;
ngAfterContentChecked()  {
    this.total = this.heroes.reduce(funtion(runningValue: number, hero: Hero)=> {
      runningValue = runningValue + (hero.price * hero.qty);
    }, 0);
}

模板代码:

<ul>
  <li *ngFor="let hero of heroes">{{hero.name}} <span>{{hero.price*hero.qty}}</span></li>
  <li>Total price <span>{{total}}</span></li>
</ul>

关于*ngFor 中的 Angular 4 计算总值之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293176/

相关文章:

javascript - API 调用时的 Angular 定位控制台错误

angular - Ng-select 在对话框中添加额外的隐藏高度

javascript - 绑定(bind)单击并更改复选框angular2

typescript - Angular2在路由器导出之外获取路由器参数

javascript - 如何将自定义 SVG 图标添加到本地 fontawesome 库 (fontawesome-all.js)?

javascript - 类型 'File' 的参数不可分配给类型 'string' 的参数

angular - d3-ng2-服务错误 "property Links does not exists of type force()"

Angular 2 - 如何自动将对象值绑定(bind)到与表单控件相关的对象?

javascript - Angular 2 : Bind form context to ngTemplateOutlet

angular - IE11 中的绘制时间