该构造函数位于文件 popover.directive.ts 里:typescript
第 11 行 cxPopOver Directive 施加到 button 元素上以后,运行时,cxPopOver Directive 的构造函数触发。其参数,既有应用程序定义的类型,好比 PositioningService, 也有框架使用的类型,好比 ElementRef,ViewContainerRef 等等。app
咱们注入这个实例的惟一目的,就是调用其 createComponent 方法。框架
const containerFactory = this.componentFactoryResolver.resolveComponentFactory( PopoverComponent ); this.popoverContainer = this.viewContainer.createComponent( containerFactory );
createComponent 方法须要输入参数为 containerFactory,后者经过另外一个注入参数实例 componentFactoryResolver 提供。componentFactoryResolver 能够理解成制造工厂的工厂函数:须要的输入参数是待生产 Component 的定义,在这个例子里为 PopoverComponent:函数
而 createComponent 返回的数据,类型为 ComponentRef, 包含了 PopoverComponent 的实例。this
引入该属性,是为了调用其 appendChild 方法,把建立好的 PopoverComponent 实例,添加到 DOM 树中去。spa
在 SAP Spartacus 实现中没有用到。code
在 SAP Spartacus 实现中没有用到。component
负责元素 focus 相关的实现。ip
负责将新建的 PopoverComponent 实例中的 DOM 元素,添加到当前 document 的 body 节点上。element
更多Jerry的原创文章,尽在:"汪子熙":