我曾经也遇到过同样的问题。当我使用F6快捷键打开对话框时,输入框无法获得焦点。后来发现,我没有阻止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的建议,添加指令代码以提高清晰度。
以下是我编写的指令,使用了我上面链接的答案。请注意,material已将其标签标签更改为<input matInput>
而不是<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();
}
}
focused="true"
。 - Edric