首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取对当前活动HTMLElement的引用

获取对当前活动HTMLElement的引用
EN

Stack Overflow用户
提问于 2016-11-02 03:59:40
回答 1查看 10.4K关注 0票数 7

所以我有一个Angular 2和Typescript项目,我想在特定的点击下清除页面上的所有焦点。

现在,我只是使用document.activeElement获取当前活动的元素,然后对其调用.blur()。然而,这在系统上是不正确的,当然TypeScript对此大发雷霆(这是理所当然的)。

有没有什么方法可以完成同样的事情,但要确保我引用的是HTMLElement而不是Element,这样我就可以保证输入的内容是正确的?

基本上,当A)单击子导航并且所单击的菜单项已经打开时,我调用一个函数来关闭所有子菜单,以及B)当文档在不是菜单项的任何地方被单击时。

下面是调用的函数:

代码语言:javascript
复制
closeMenus = function(){
    for (var i=0, j=this.openElements.length; i<j; i++){
        this.openElements[i] = false;
    };

    document.activeElement.blur();
};

这将产生以下错误:

代码语言:javascript
复制
Property 'blur' does not exist on type 'Element'

这是绝对正确的,它存在于HTMLElement上。但是,如果我添加这一行:

代码语言:javascript
复制
console.log(document.activeElement instanceof HTMLElement);

这将返回true。所以我对TypeScript到底想要什么感到非常困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-02 04:41:38

Renderer注入到组件/指令中。

获取任何elementRef (例如,您的按钮或链接)。

代码语言:javascript
复制
constructor(private elRef: ElementRef, private renderer: Renderer){
}

然后在你的处理函数中:

代码语言:javascript
复制
this.renderer.invokeElementMethod(
     this.elRef.nativeElement.ownerDocument.activeElement, 'blur');
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40367713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档