如何绑定Angular2中li标签的keydown事件?

时间:2016-11-24 08:14:39

标签: angular

使用(click)="onSelect(hero),我可以绑定li标记的点击事件。 我还可以绑定mouseover likeydown事件。 但我无法绑定li liclick,mouseover,keydown事件。 keydown代码支持 <div class = "body-container"> <ul class = "heroes"> <li *ngFor = "let hero of heroes" (click)="onSelect(hero)" (keydown)="onKeydown()" (mouseover)="onKeydown()" class="bl-list-item" [class.bl-list-item-checked]="hero === selectedHero"> <div class="guide-label"> <span style="width:50px" [class.fa-check]="hero === selectedHero" [class.li-fa-check]="hero === selectedHero"></span> <div class="guide-code-column">{{hero.id}}</div> <div class="guide-name-column">{{hero.name}}</div> </div> </li> </ul> </div> export class SearchComponent { heroes: Hero[] = []; selectedHero: Hero; constructor(private heroService: HeroService) { } ngOnInit(): void { this.heroService.getHeroes() .then(heroes => this.heroes = heroes); } showDialog = false; onSelect(hero: Hero): void { this.selectedHero = hero; } onKeydown(): void { console.log("onKeydown"); } } 有效,因此我认为我可以使用HiddenLayerFirstNeuron.Value = (input1.Value * weight) + (input2.Value * weight) + (Bias.Value * weight) 事件(向下箭头)导航到此列表框中的下一个项目。

我可以找到哪些官方文档?

timeout

2 个答案:

答案 0 :(得分:4)

您基本上从事件类型开始,然后添加一系列点分隔修饰符。例如:

  

首先,局限性。本机KeyEventsPlugin插件仅支持   keydown和keyup事件,而不是keypress。而且,这些关键组合   只能绑定到特定元素(或主机) - 插件不会   似乎支持全局“document:”或“window:”事件范围。   浏览器覆盖也没有隐式支持。意思是,如果   你需要取消组合密钥的默认行为   必须自己做(使用$ event.preventDefault())。

keydown.a
keydown.b
keydown.c
keydown.dot
keydown.Spacebar
keydown.meta.Enter
keydown.alt.Enter
keydown.control.Enter
keydown.shift.Enter
keydown.meta.o
keydown.meta.s
keydown.meta.f
keydown.escape

“特殊键”修饰符为:

ALT 控制 meta - Mac上的Command键和Windows上的Windows键。 转移 然后有两个替换键,只是保持语法不会破坏:

空间 - 或者,您可以使用“空格键”。 点 - 由于修饰符以点分隔。

  <input
    (keydown.Enter)="handleKeyEvent( $event, 'Enter' )"
    (keydown.alt.Enter)="handleKeyEvent( $event, 'ALT + Enter' )"                                   (keydown.control.Enter)="handleKeyEvent( $event, 'Control + Enter' )"
    (keydown.meta.Enter)="handleKeyEvent( $event, 'Meta + Enter' )"
    (keydown.shift.Enter)="handleKeyEvent( $event, 'Shift + Enter' )"
    (keydown.Escape)="handleKeyEvent( $event, 'Escape' )"
    (keydown.ArrowLeft)="handleKeyEvent( $event, 'Arrow Left' )"
    (keydown.ArrowUp)="handleKeyEvent( $event, 'Arrow Up' )"
    (keydown.ArrowRight)="handleKeyEvent( $event, 'Arrow Right' )"
    (keydown.ArrowDown)="handleKeyEvent( $event, 'Arrow Down' )"
 autofocus>

答案 1 :(得分:2)

元素必须是焦点,因此它必须是输入元素或将tabindex设置为>= "0"

另见Capture key press (or keydown) event on DIV element

您可以像(window:keydown)="onKeydown($event)"一样全局捕捉键盘事件,但我不知道这对您的情况是否有帮助。