如何监听角度材料表上的 keydown 事件

N.C*_*ian 1 keyboard-events angular-material angular

我想监听角度材料表上的键盘事件来操作选定的行。我尝试过使用该指令:

@Directive({
    selector: '[keyDownAction]'
})
export class KeyDownDirective {
    constructor() {
    }

@HostListener('keydown', ['$event'])
handleClick(event: Event) {
    console.log(event);
}

}
Run Code Online (Sandbox Code Playgroud)

主持人聆听:

  host: { '(keydown)': 'hotkeys($event)' },
Run Code Online (Sandbox Code Playgroud)

并直接:

    <mat-row *matRowDef="let row; columns: displayedColumns; let i=index"
             [focus]="selectedRow==i"
             (click)="clickOnRow(row, $event, i)"
             (dblclick)="dblClickOnRow(row, $event, i)"
             (keydown)="keyDownFunction($event)"
             >
Run Code Online (Sandbox Code Playgroud)

click 和 dblclick 工作的地方。

有人知道解决方法吗?

cro*_*umb 6

我知道这是一个很晚的答案,但对于这个问题的未来发现者......

任何不是属性的东西都<input>需要该tabindex属性才能keydown触发事件。任何索引号都可以。只需将您的代码更改为...

<mat-row *matRowDef="let row; columns: displayedColumns; let i=index"
         tabindex=0
         [focus]="selectedRow==i"
         (click)="clickOnRow(row, $event, i)"
         (dblclick)="dblClickOnRow(row, $event, i)"
         (keydown)="keyDownFunction($event)"
>
Run Code Online (Sandbox Code Playgroud)