SAP Spartacus注入自定义的CurrentProductService

时间:2022-07-25
本文章向大家介绍SAP Spartacus注入自定义的CurrentProductService,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

新建一个MyCurrentProductService,返回一个硬编码的产品主数据:

完整源代码如下:

import { Product, ProductScope } from '@spartacus/core';
import { Observable, of } from 'rxjs';

const PRODUCT: Product = {
    code: '300938',
    name: 'Jerry hard code value',
    summary: 'Jerry hard code value.',
    price: {
        formattedValue: '$10000',
        currencyIso: 'USD',
        // "priceType": "BUY",
        value: 10000
    },
    images: {
        PRIMARY: {
            zoom: {
                altText: 'Photosmart E317 Digital Camera',
                format: 'zoom',
                // : "PRIMARY",
                url: 'https://spartacus-dev0.eastus.cloudapp.azure.com:9002/medias/?context=bWFzdGVyfGltYWdlc3wxMzkzNnxpbWFnZS9qcGVnfGltYWdlcy9oMjYvaDdhLzg3OTcyNTE0NjkzNDIuanBnfGU3N2FlYWQ1YmQ1ODhjZjZiNTFjNDg3NDdjNGRkNjM5NGQzMjZmZWVmNjc3ZWQwMjgzY2MyNDJlNzYyNTczM2Q'
            },
            product: {
                altText: 'Photosmart E317 Digital Camera',
                format: 'product',
                // "imageType": "PRIMARY",
                url: 'https://spartacus-dev0.eastus.cloudapp.azure.com:9002/medias/?context=bWFzdGVyfGltYWdlc3w3MDg1fGltYWdlL2pwZWd8aW1hZ2VzL2g2Ni9oOWQvODc5NzI3Nzc0OTI3OC5qcGd8NzdjOTNiMThkODQ4NTM4NmQ2NjMxMGMwYmMyOTIwODIwMzI4NTgyMGUxNDc4Y2I0OTRkOGViODNlNDZiYTJhNw'
            },
            thumbnail: {
                altText: 'Photosmart E317 Digital Camera',
                format: 'thumbnail',
                // "imageType": "PRIMARY",
                url: 'https://spartacus-dev0.eastus.cloudapp.azure.com:9002/medias/?context=bWFzdGVyfGltYWdlc3wyMDYxfGltYWdlL2pwZWd8aW1hZ2VzL2g3ZS9oZmEvODc5NzMwNDA5NDc1MC5qcGd8OGZjMTNjM2JmMGY0MmYyMWY3OGM5YjQ4YjAyNzM4NjkxYjUyMmQzMDBhMmMzMjMwZThmMjI4OWMwZjg1NmYzMw'
            },
            cartIcon: {
                altText: 'Photosmart E317 Digital Camera',
                format: 'cartIcon',
                // "imageType": "PRIMARY",
                url: 'https://spartacus-dev0.eastus.cloudapp.azure.com:9002/medias/?context=bWFzdGVyfGltYWdlc3wxNDQwfGltYWdlL2pwZWd8aW1hZ2VzL2gxNS9oZmYvODc5NzMzMDQ0MDIyMi5qcGd8ODU0ZWQwMjY5OWE5OTBlZjc0ZGFhZTU4ZWYwNDk4ODFmZmM1ZTg2ZjIxOWFiZTBkZmU0NDBmMDBiNTYyMzdlYg'
            }
        },
        GALLERY: []
    },
    nameHtml: 'Photosmart E317 Digital Camera',
    //nameForUrl: 'photosmart-e317-digital-camera',
    baseOptions: [],
    purchasable: true,
    averageRating: 4.5,
    stock: {
        /*
        'isValueRounded': false,
        'stockLevel': 314,
        'stockLevelStatus': 'inStock'*/
    },
    description: 'Get point and shoot simplicity plus crisp, true-to-life photos with this stylish and easy-to-use camera.<br/><br/>Get close in with 4x digital zoom, review via the clear 3.8 cm LCD then print great 10 × 15 cm photos and enlargements up to poster size.',
    availableForPickup: true,
    url: '/electronics-spa/products/300938',
    numberOfReviews: 22,
    manufacturer: 'HP',
    categories: [
        {
            code: '576',
            name: 'Digital Compacts',
            url: '/Open-Catalogue/Cameras/Digital-Cameras/Digital-Compacts/c/576'
        },
        {
            code: 'brand_1',
            name: 'HP',
            url: '/Brands/HP/c/brand_1'
        }
    ],
    priceRange: {}//,
    //configurable: false
};

export class MyCurrentProductService {
    getProduct(scopes?: (ProductScope | string)[] | ProductScope | string): Observable<Product> {
        console.log('My product service is called!');
        return of(PRODUCT);
    }
}

在app module里,用MyCurrentProductService覆盖掉SAP Spartacus标准的CurrentProductService:

运行时测试,我任意点开一个产品主数据的明细页面,都会调用我自己的CurrentProductService,显示硬编码的数据: