解析 SAP Spartacus B2B list 实现,即list.component.html时,由于在Component 模板里遇到了[cxPopover]指令,所以触发依赖注入:html
首先建立directive实例:函数
当点击宿主元素 icon 时,由于@HostListener 注解的缘由,一旦宿主元素发生了 click 事件后,咱们定义在 directive 实现里的handleOpen方法会自动被调用:this
下图标号为1的componentFactoryResolver,来自Popover directive 构造函数的依赖注入;spa
标号为2的PopoverComponent,来自咱们在另外一个文件里实现并经过export 导出的Component:component
标号为3的PopoverContainer,是this.viewContainer(一样是构造函数依赖注入的结果)调用 createComponent 返回的结果,其结构为:htm
this.popoverContainer.changeDetectorRef.detectChanges();
手动触发PopoverComponent的Change detection - 变动检测事件
而后调用handlePopoverEvents,执行事件处理注册逻辑:图片
更多Jerry的原创文章,尽在:"汪子熙":rem