Angular 角度2+使用管道更新模板值

Angular 角度2+使用管道更新模板值,angular,angular-pipe,angular-template-variable,Angular,Angular Pipe,Angular Template Variable,我正在编写购物车的结帐视图,其中显示一个数组,其中包含要购买的项目,如下所示: app.component.html 我想让用户能够在最后一分钟向列表中添加更多项目,但不知何故,即使我更新了数组和小计,总数也不会刷新 我通过增加一个数量变量来更新数组的小计,该变量直接影响数组中的对象,如下所示: app.component.ts AddmoreItemsOFThistypea{ this.shoppingarray[a].qt+=1; } 然后我通过一个管道传递每个小计来重新计算每个小计,该管道

我正在编写购物车的结帐视图,其中显示一个数组,其中包含要购买的项目,如下所示:

app.component.html

我想让用户能够在最后一分钟向列表中添加更多项目,但不知何故,即使我更新了数组和小计,总数也不会刷新

我通过增加一个数量变量来更新数组的小计,该变量直接影响数组中的对象,如下所示:

app.component.ts

AddmoreItemsOFThistypea{ this.shoppingarray[a].qt+=1; } 然后我通过一个管道传递每个小计来重新计算每个小计,该管道将x.qt作为参数,x.qt是管道刚刚乘以x.price*x.qt所增加的数量

app.component.html

{x.price | totalPerItem:x.qt} 问题是全局合计不会更新从筛选器返回的值

app.component.html

{{shoppingarray | CalculateTotalpipe}} CalculateTotalpipe只是循环整个数组并添加所有总计,不知何故,初始总计是正确的,但对小计的修改不会生效

有没有办法刷新shoppingarray以便CalculateTotalpipe生成更新的总数

有没有更好的方法


谢谢

Andres小心使用不纯净的管道。 正如文件中所述:

Angular在每个组件更改期间执行不纯净管道 检测周期。不纯的管子常被称为“常管” 按键或鼠标移动

这意味着,每次用户移动鼠标或滚动页面时,您的总金额都将重新计算。 这将引入性能问题


我建议找到另一种不使用管道的方式来实现总计。为什么不使用简单的服务?

您的组件中是否有可变的总数?如果你真的让你在视图中将这个变量单独绑定到[ngModel],我确实有一个,但我不知道如何将它与视图中的过滤器结合使用,因为我直接从对整个数组{{shoppingarray | CalculateTotalpipe}进行操作的过滤器中提取全局总数。关于如何将[ngModel]与var总额和过滤器结合起来的任何建议。艾瑞德。你不应该用烟斗。使用组件的常规方法,或在每次数量变化时预计算总数。问题已解决:使用纯管道不是正确的方法。在宣布管道不纯净后,问题得到了解决。谢谢!我确实在包含基本价格的数组中包含了一个不可更改的键:number,因此每次添加一个项目时,我都会更新数组`AddmoreItemsOFThistypea{this.shoppingarray[a].price+=this.shoppingarray[a].qt*this.shoppingarray[a].baseprice;}`。然后我宣布这些管子不纯净,这就成功了!!!!谢谢