我在同样的问题上苦苦挣扎。我正在使用 F6 打开对话框,但无法<input>
获得焦点。事实证明,我并没有阻止 F6 和 F6 突出显示浏览器 URL 窗口的默认行为;所以它正在窃取焦点。
switch (event.keyCode) {
case 117:
event.preventDefault();
this.openAddAveragesDialog();
break;
default:
return;
}
此外,没有魔术标签属性有效。自动对焦,对焦,对焦,随便什么,没有骰子。我必须创建一个指令并在我的输入元素中使用它。我使用这个答案得到了帮助。
这是添加指令后的元素(numberOnly 是另一个仅用于数字输入的指令):
<md-input-container> <input mdInput [focus]="true" [numberOnly]="true"/></md-input-container>
**编辑:为清楚起见,按照@Mackelito 的建议添加指令代码。这是我使用上面链接的答案编写的指令。请记住,材料已将其标签标签更改为<input matInput>
from<input md-input>
import {Directive, ElementRef, Inject, Input, OnChanges, OnInit, Renderer} from '@angular/core';
@Directive({
selector: '[focus]'
})
export class FocusDirective implements OnChanges, OnInit {
@Input()
focus: boolean;
constructor(@Inject(ElementRef) private element: ElementRef, public renderer: Renderer) {}
ngOnInit() {
this.renderer.invokeElementMethod(this.element.nativeElement, 'focus', []);
}
public ngOnChanges() {
this.element.nativeElement.focus();
}
}