SAP Spartacus B2B Popover Directive 和 Popover Component 的生命周期管理
【摘要】 解析 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)