如何在 Angular 6 上获得活动元素(重点元素)?

akc*_*soy 9 angular angular6

——不重复!由于其他问题已过时。不与提出的问题重复!!!!

this.elm.nativeElement.ownerDocument.activeElement
Run Code Online (Sandbox Code Playgroud)

document.activeElement
Run Code Online (Sandbox Code Playgroud)

奇怪地给了我整个身体。我怎样才能获得当前聚焦的元素?

  • elm = ElementRef 的类型,它绑定在我组件的构造函数中。

  • 来自这里的另一个问题: this.renderer.invokeElementMethod 也不可调用,因为 Renderer 现在已弃用,而 Renderer2 显然不再具有该方法。

编辑:这个问题部分回答了这个问题:

document.activeelement 返回正文

在离开旧元素和进入新元素之间,活动元素确实是文档/正文本身。

akc*_*soy 5

我必须在超时内覆盖“document.activeElement”或“this.elm.nativeElement.ownerDocument.activeElement”,以便下一个角度生命周期检查活动元素。否则,当“X.activeElement”在焦点更改后立即执行时,您将获得整个主体,因为在输入新元素时,活动元素确实是文档/主体本身。

setTimeout(function() {
  X = document.activeElement;
});
Run Code Online (Sandbox Code Playgroud)

编辑 ES6(也可以使用“this”):

setTimeout(() => {
  X = document.activeElement;
});
Run Code Online (Sandbox Code Playgroud)

  • 从 ES6 开始,最佳实践是使用[箭头函数](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)。那么 `this` 将是您期望的范围(定义 setTimeout 的范围)。 (2认同)