Javascript 使用快捷键在angular6中聚焦可编辑项的方法是什么?

Javascript 使用快捷键在angular6中聚焦可编辑项的方法是什么?,javascript,html,angular,browser,Javascript,Html,Angular,Browser,我试着在Angular 6中使用accesskey。但它似乎不起作用 组件html tamplate代码段: 有人能提供Angular 6中的工作代码示例吗。 提前感谢据我所知,没有“角度批准”的方式手动更改元素的焦点。当然,您总是可以通过使用ElementRef访问nativeElement,然后调用DOM方法“.focus()”,但Angular没有内置的方法来实现这一点(他们甚至从Renderer2中删除了Renderer中的“invokeElementMethod”功能)。您可以绑定到

我试着在Angular 6中使用accesskey。但它似乎不起作用

组件html tamplate代码段:

有人能提供Angular 6中的工作代码示例吗。
提前感谢

据我所知,没有“角度批准”的方式手动更改元素的焦点。当然,您总是可以通过使用ElementRef访问nativeElement,然后调用DOM方法“.focus()”,但Angular没有内置的方法来实现这一点(他们甚至从Renderer2中删除了Renderer中的“invokeElementMethod”功能)。您可以绑定到输入的“tabindex”属性,该属性至少允许您定义tab键聚焦它们的顺序,但除此之外,我认为您不能使用任何角度认可的方法更改焦点。要执行您要求的操作,我认为您必须使用HostListener或其他设置keyup/keydown侦听器的方法,侦听您感兴趣的特定键,然后使用DOM“.focus()”方法手动设置焦点。

如果“S”是小写的,您的代码可以工作
accesskey
在每个浏览器和操作系统上有不同的键盘快捷键:在Windows和Chrome上的示例中,按
[Alt]+[s]
将聚焦元素

如果你需要一个不同的快捷组合,你需要听一听按键。这可以在简单的JS中完成,也就是在示例中

然而,“角度”方式意味着在不直接与DOM交互的情况下进行操作。这可以通过注入
渲染器2
并以这种方式设置事件侦听器来实现:

constructor(private _r: Renderer2) {}

ngOnInit() {
  this._r.listen(document, 'keyup', (event) => {
  if(event.keyCode === 83) {
    // assuming you get a reference to the input element
    this.input.nativeElement.click();
  }
})
}
更好的是,通过观察:

ngOnInit() {
  Observable.fromEvent(document, 'keyup').pipe(
    filter(s => s.keyCode === 83)
  ).subscribe(s => this.doStuff())
}

这也可以很容易地封装在指令中。

这里没有代码片段。对不起,忘了放引号了。更新。代码是简单的html格式。