SAP Spartacus B2B Popover Directive 和 Popover Component 的生命周期管理

举报
Jerry Wang 发表于 2022/05/17 22:15:57 2022/05/17
【摘要】 解析 SAP Spartacus B2B list 实现,即list.component.html时,因为在Component 模板里遇到了[cxPopover]指令,因此触发依赖注入:首先创建directive实例:当点击宿主元素 icon 时,因为@HostListener 注解的原因,一旦宿主元素发生了 click 事件后,我们定义在 directive 实现里的handleOpen方...

解析 SAP Spartacus B2B list 实现,即list.component.html时,因为在Component 模板里遇到了[cxPopover]指令,因此触发依赖注入:

首先创建directive实例:

当点击宿主元素 icon 时,因为@HostListener 注解的原因,一旦宿主元素发生了 click 事件后,我们定义在 directive 实现里的handleOpen方法会自动被调用:

下图标号为1的componentFactoryResolver,来自Popover directive 构造函数的依赖注入;

标号为2的PopoverComponent,来自我们在另一个文件里实现并通过export 导出的Component:

标号为3的PopoverContainer,是this.viewContainer(同样是构造函数依赖注入的结果)调用 createComponent 返回的结果,其结构为:

在这里插入图片描述

this.popoverContainer.changeDetectorRef.detectChanges();

手动触发PopoverComponent的Change detection - 变更检测

然后调用handlePopoverEvents,执行事件处理注册逻辑:

看看这种错误消息的一个例子:

combination reference table/field XXX does not exist

引起错误的字段类型为LOSMENGE,字段名为INSLO:

该字段的基本数据类型(Data Type)为 QUAN,长度为13.

根据ABAP帮助文档, QUAN类型需要和某种单位字段结合在一起,用于描述实际业务流程中的数量,比如 一本书,一件啤酒,一捆绳子等等。

按照ABAP帮助文档里的规定,类型为QUAN的字段,必须设置一个类型为 UNIT 的字段作为单位,二者共同描述“数量”这个概念,缺少单位,数量单位的语义就不完整。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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