Javascript 带reduce函数的角度总和

Javascript 带reduce函数的角度总和,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,首先,我试图通过在角度绑定中使用javascript reduce函数对对象数组的特定属性求和 组成部分 totals: total[] = [{itemCount:1},{itemCount:2},{itemCount:3}, {itemCount:4}]; HTML {{totals.map(t=>t.itemCount).reduce((a,b)=>a+b,0)} 在上面,我得到了一个错误:“绑定不能包含赋值” 提前谢谢 编辑 我已将@Qurimmo提供的答案标记为正确答案,但我还想

首先,我试图通过在角度绑定中使用javascript reduce函数对对象数组的特定属性求和

组成部分

totals: total[] = [{itemCount:1},{itemCount:2},{itemCount:3}, {itemCount:4}];
HTML

{{totals.map(t=>t.itemCount).reduce((a,b)=>a+b,0)}
在上面,我得到了一个错误:“绑定不能包含赋值”

提前谢谢

编辑

我已将@Qurimmo提供的答案标记为正确答案,但我还想回答@jo_va answer

我觉得在我的组件中为angular提供一个方法是@Quirimo的正确方法,但是在我的例子中,组件是根据客户机请求JIT编译的,此时,我仍然不确定如何在组件构造期间动态添加该方法。这让我想到了HTML中的表达式方法,并有意避免@jo_va对最佳实践的回答

我的解决方案是将服务作为对象传递给组件,并将方法放在该服务中以供参考


感谢S.O.

的帮助,在组件内部定义一个函数,返回减少的值,并在绑定调用中定义组件的函数:

const totals=[{itemCount:1},{itemCount:2},{itemCount:3},{itemCount:4}];

console.log(totals.reduce((acc,val)=>acc+=val.itemCount,0))映射并减少返回一个新数组。这就是你的错误的来源


你可以用这样的吸气剂。模板不应包含计算。

您的
reduce
功能运行良好。但是,在角度绑定中使用表达式是一种不好的做法

将逻辑移到组件并调用方法或getter。

总计。减少((a,b)=>a+=(b.itemCount),0)有效

<div>{{ totals.map(t => t.itemCount).reduce((a, b) => a + b, 0) }}</div>