SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析

Focusdirective并没有特殊的实现,同其父类Lockdirective相比只是把selector暴露出来而已:

SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析

三个依赖:

  • elementRef: 施加Directive的DOM元素
  • service: keyboardFocusService
  • renderer: Renderer2

再看其父类LockDirective的实现。

有一个默认的配置defaultConfig:

SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析

当host元素有事件发生时,触发@HostListener修饰的handleEnter方法:

SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析

unlock意味着tabindex为0, 即focus首先落在的位置。

lock实现就是把元素的tabindex设为-1:

注意这里调用注入的renderer给HTML元素设置focus_group_attr属性:

shouldAutofocus返回值取决于this.config.autofocus的配置:

SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析

这里并没有看到自动设置元素focus的代码:

单击上图第157行代码,进入AutoFocusDirective的实现:

这里调用了元素的focus方法实现focus.

更多Jerry的原创文章,尽在:“汪子熙”:
SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析

上一篇:一个css属性选择器的实际例子


下一篇:IDEA常用设置1