0

我有两个组件,一个 CmsFlexComponent

INSERT_UPDATE CMSFlexComponent;$contentCV[unique=true];uid[unique=true];name;flexType;&componentRef
;;VideoListingComponent;VideoListingComponent;VideoListingComponent;VideoListingComponent

和一个 SimpleBannerComponent

;;VideoListingComponent;VideoListingComponent;VideoListingComponent;VideoListingComponent 
 INSERT_UPDATE Media; $contentCV[unique = true]; code[unique = true]; mime     ; realfilename; @media[translator = de.hybris.platform.impex.jalo.media.MediaDataTranslator][forceWrite = true]; folder(qualifier)[default = 'images']
               ;                          ; banner1            ; text/jpg ; banner1.jpg ; $jarResourceCms/banner1.jpg

INSERT_UPDATE SimpleBannerComponent; $contentCV[unique = true]; uid[unique = true]    ; name                   ; &componentRef       ; $picture[lang = $lang]
                               ;                          ; VideoListPageBanner   ; Video List Page Banner ; VideoListPageBanner ; banner1

在 Spartacus 中,我定义了如下映射: export const videoListingConfig = { cmsComponents: {

VideoListingComponent: {
      component: VideoListingComponent
    },
    VideoListPageBanner:{
      component: VideoListPageBannerComponent
    }    
}

  }

我想访问第二个横幅组件:所以在那个组件 ts 文件中,我注入了

private component: CmsComponentData<CmsBannerComponent>

当我尝试打印时

    this.component.data$.subscribe(comp => this.cmsComp = comp);
console.log(this.component);

我总是取回第一个组件数据。我究竟做错了什么。我认为这是开箱即用的。

4

1 回答 1

0

您不能将单个实例的组件 ID 映射到 Spartacus 中的组件,您只能将 Commerce 组件类型映射到 Spartacus 组件。例外是 CMSFlexComponents,其中 flexType 值被映射。请参阅:https ://sap.github.io/spartacus-docs/customizing-cms-components/和https://sap.github.io/spartacus-docs/banner-component/

作为参考,在banner.module.ts中设置 SimpleBannerComponent 映射的标准 Spartacus 代码:

ConfigModule.withConfig(<CmsConfig>{
  cmsComponents: {
    SimpleResponsiveBannerComponent: {
      component: BannerComponent,
    },
    BannerComponent: {
      component: BannerComponent,
    },
    SimpleBannerComponent: {
      component: BannerComponent,
    },
  },
}),

使用您的第二个组件,您试图映射一个 UID (VideoListPageBanner),但这不起作用。

于 2020-04-27T09:34:42.060 回答