我正在编写购物车的结帐视图,其中显示了一个array
,其中包含要购买的物品,如下所示:
app.component.html
<div *ngFor="let x of shoppingarray">
<!-- Other code here... -->
</div>
我想让用户有可能在最后一刻向列表中添加更多项目,但不知何故,即使我更新了array
和小计,总数也不会刷新。
我确实通过增加直接影响array
中objects
的数量变量来更新array
上的小计,如下所示:
app.component.ts
AddmoreItemsOFThistype(a) {
this.shoppingarray[a].qt+= 1;
}
然后,我通过将每个小计传递到一个pipe
重新计算每个小计,给出x.qt
作为参数,即递增的数量(管道只是乘以x.price * x.qt
(。
app.component.html
<div> {{ x.price | totalPerItem: x.qt }} </div>
问题是全局total
不会更新从filters
返回的值。
app.component.html
<div> {{ shoppingarray | CalculateTotalpipe }} </div>
CalculateTotalpipe
只是循环整个array
添加所有totals
,不知何故初始total
是正确的,但对小计的修改不会生效。
有没有办法刷新shoppingarray
以便CalculateTotalpipe
生成更新的total
?
有没有更好的方法?
谢谢!
安德烈斯对使用不纯管道要谨慎。 正如文档中所写:
Angular 在每次组件更换期间执行不纯的管道 检测周期。不纯的管道经常被调用,就像每个 击键或鼠标移动。
这意味着,每次用户移动鼠标或滚动页面时,您的总金额都会被重新计算。 这将引入性能问题。
我建议找到另一种不使用管道来实现总数的方法。为什么不使用简单的服务?