如何在SAP Spartacus PDP页面使用自定义新增的ProductWsDTO属性
SAP Spartacus 扩展Product模型获取后端自定义属性方案
你可以通过TypeScript的接口声明合并能力直接扩展Spartacus原生Product类型,完全复用原有底层服务的API请求逻辑,不需要修改任何Spartacus核心服务代码,操作步骤如下:
- 第一步:扩展Spartacus原生Product接口
在你的项目自定义类型文件(如src/app/core/models/product.models.ts)中添加如下声明,TypeScript会自动将你新增的字段和Spartacus原生Product接口合并:
import { Product as SpartacusProduct } from '@spartacus/core'; declare module '@spartacus/core' { interface Product extends SpartacusProduct { // 新增后端返回的自定义字段 manufacturedYear?: number; // 其他自定义字段可直接在此处追加声明 } }
- 第二步:使用扩展后的Product类型
原有获取产品的代码只需要补全Observable的泛型即可,不需要修改请求逻辑:
// 此处导入的Product为你扩展后的合并类型 import { Product } from '@spartacus/core'; import { Observable } from 'rxjs'; // 组件内代码 product$: Observable<Product> = this.currentProductService.getProduct();
完成上述操作后,你就可以直接调用product.manufacturedYear获取后端返回的自定义属性,不会出现TS类型报错。
注意:如果你在OCC配置中指定了返回字段的白名单(fields参数),需要将
manufacturedYear加入到Product对应的fields配置中,否则该字段会被OCC接口过滤不会返回。
内容的提问来源于stack exchange,提问作者Balaji Mohan
相关产品推荐
相关产品推荐

