使用outlet在Spartacus中添加自定义UI

举报
汪子熙 发表于 2021/09/27 15:14:15 2021/09/27
【摘要】 outlet 或者在SAP Spartacus中硬编码,或者通过CMS driven.Angular里添加自定义UI的原理是基于TemplateRef, 通过ng-template Component 添加。cxOutletRef是 Angular directive的selector:通过==OutletRefModule==暴露给消费者。Just a simple piece of co...

outlet 或者在SAP Spartacus中硬编码,或者通过CMS driven.

Angular里添加自定义UI的原理是基于TemplateRef, 通过ng-template Component 添加。

cxOutletRef是 Angular directive的selector:

在这里插入图片描述
通过==OutletRefModule==暴露给消费者。

Just a simple piece of code to inject your custom UI element to SAP Spartacus via outlet:

其中header定义在storefront.component.html里:

最后的效果:默认情况下把标准的header区域替换了:

如果加上属性值cxOutletPos=“after”, 则不覆盖header,而是放到标准header的后面:

效果如下:


如果没有==TemplateRef==,想希望通过TypeScript的方式动态添加Component,应该怎么做?

例子:
在这里插入图片描述

export function registerOutletsFactory(
  providedOutletOptions: ProvideOutletOptions[],
  componentFactoryResolver: ComponentFactoryResolver,
  outletService: OutletService<ComponentFactory<Type<any>>>
) {
  const result = () => {
    (providedOutletOptions ?? []).forEach((options) => {
      const factory = componentFactoryResolver.resolveComponentFactory(
        options.component
      );
      outletService.add(
        options.id,
        factory,
        options.position ?? OutletPosition.AFTER
      );
    });
  };
  return result;
}

要获取更多Jerry的原创文章,请关注公众号"汪子熙"。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。