将keyDown()注册到angular2中的特定组件
我正在尝试构建一个包含多个组件的angular2应用程序。它是使用自定义和许多第三方UI组件构建的。我使用的一个树组件使用@Hostlistener在文档上注册一个全局键控侦听器。我的一个组件有一个具有多个选择的表。因此,使用“ctrl”键的简单选择操作将触发树组件的处理程序 我的示例用例将keyDown()注册到angular2中的特定组件,angular,angular2-template,Angular,Angular2 Template,我正在尝试构建一个包含多个组件的angular2应用程序。它是使用自定义和许多第三方UI组件构建的。我使用的一个树组件使用@Hostlistener在文档上注册一个全局键控侦听器。我的一个组件有一个具有多个选择的表。因此,使用“ctrl”键的简单选择操作将触发树组件的处理程序 我的示例用例 我有一个MyTreeComponent,它有一棵树。树需要处理“delete”键并删除节点 MyTreeComponent有4-5个实例(想象一个里面有多棵树的手风琴) 我在我的组件中的keydown上注册了
import {HostListener, KeyboardEvent} from '@angular/core';
@Component({...})
export class MyTreeComponent {
@HostListener('document:keydown', ['$event'])
onKeyDown(event:KeyboardEvent) {
// check if the event is a delete and perform delete action
}
}
提前感谢您的帮助请在问题中添加代码,以演示您试图完成的任务。散文很好,但很模糊<默认情况下,code>@HostListener()是特定于组件的。你认为什么是“积极的”?您可以设置
tabindex=“0”
并收听focus
事件,跟踪您自己最后获得焦点的组件,或者使用activeElement
2。您可以像javascriptdocument.activeement
一样获取。它将显示当前处于活动状态的元素。是的,正如GuntertabIndex=0
所提到的,应该在这里感谢@GünterZöchbauer和词典的输入。我更新了我的问题,补充了一些细节。有什么建议吗?什么是特定于组件的@HostListener()
?无法动态添加/删除@HostListener()
。不过,您可以根据标志决定忽略处理程序内的事件<代码>如果(!ignore){doSomething}通过特定于组件的侦听器,我指的是键盘侦听器,如果按键事件发生在该组件内部而不是外部,则会触发该侦听器。即使我使用了一个标志,我也花了相当长的时间在多个实例中对太多的“ctrl”键事件进行比较。散文很好,但很模糊<默认情况下,code>@HostListener()是特定于组件的。你认为什么是“积极的”?您可以设置tabindex=“0”
并收听focus
事件,跟踪您自己最后获得焦点的组件,或者使用activeElement
2。您可以像javascriptdocument.activeement
一样获取。它将显示当前处于活动状态的元素。是的,正如GuntertabIndex=0
所提到的,应该在这里感谢@GünterZöchbauer和词典的输入。我更新了我的问题,补充了一些细节。有什么建议吗?什么是特定于组件的@HostListener()
?无法动态添加/删除@HostListener()
。不过,您可以根据标志决定忽略处理程序内的事件<代码>如果(!ignore){doSomething}通过特定于组件的侦听器,我指的是键盘侦听器,如果按键事件发生在该组件内部而不是外部,则会触发该侦听器。即使我使用了一个标志,我也经历了在多个实例中对太多的“ctrl”键事件进行比较所花费的大量时间。