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



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

app.component.html

<div *ngFor="let x of shoppingarray">
<!-- Other code here... -->
</div> 

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

我确实通过增加直接影响arrayobjects的数量变量来更新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 在每次组件更换期间执行不纯的管道 检测周期。不纯的管道经常被调用,就像每个 击键或鼠标移动。

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

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

相关内容

  • 没有找到相关文章

最新更新