You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spartacus中CartOutlets.ITEM_DETAILS如何注入OrderEntry上下文

解答

不需要重写或复制整套购物车层级组件,有两种无侵入方案可以直接获取orderEntry(购物车行项目entry对象),无需修改cart-details、cart-item-list等上游组件。

方案1:通过模板变量接收Outlet默认上下文(推荐,适配Spartacus 3.2及以上版本)

Spartacus从3.2版本开始,已经为CartOutlets.ITEM_DETAILS出口默认注入了上下文,无需手动传入[cxOutletContext]配置,直接在ng-template上声明输入变量即可拿到目标对象:

<ng-template [cxOutlet]="CartOutlets.ITEM_DETAILS" let-entry="entry">
  <!-- 此处entry即为需要的orderEntry对象,可直接绑定自定义业务字段 -->
  <div>自定义业务信息:{{ entry?.yourCustomField }}</div>
</ng-template>

若项目使用3.2以下的Spartacus版本,默认上下文不会自动传递,可使用下面的全版本兼容方案。

方案2:注入宿主CartItemComponent实例(全版本通用)

CartOutlets.ITEM_DETAILS出口嵌入在CartItemComponent的视图内部渲染,自定义模板中可以直接通过Angular依赖注入拿到当前行的CartItemComponent实例,实例本身就暴露了entry属性:

<ng-template [cxOutlet]="CartOutlets.ITEM_DETAILS" let-cartItem="comp">
  <!-- cartItem为当前行的CartItemComponent实例,直接读取entry属性即可 -->
  <div>商品编码:{{ cartItem.entry?.product.code }}</div>
  <div>自定义展示内容:{{ cartItem.entry?.yourCustomBizField }}</div>
</ng-template>
  • 以上两种都是Spartacus Outlet机制原生支持的扩展方式,不会破坏购物车原生的数量修改、价格计算、优惠券核销等逻辑,没有升级兼容风险。
  • 拿到entry对象后,可直接关联获取对应商品、促销等关联数据,不需要额外传递参数。

内容的提问来源于stack exchange,提问作者Krzysztof Platis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:18:22