【发布时间】:2019-03-07 01:32:27
【问题描述】:
我正在尝试在 Dialog 元素中使用 AutoCompete 组件。当对话框打开时,我希望焦点转到 AutoComplement 元素。
我还没有找到这方面的确切教程。
我的效果是基于这个stackoverflow链接: How to use Angular4 to set focus by element id
还有这个 Github 问题: https://github.com/primefaces/primeng/issues/2029 虽然我不理解 onAfterShow 事件之类的部分,但该线程中的某些人尝试过但不起作用。
我的代码是这样的(简化):
组件
<p-dialog [(visible)]="this.display" modal="true"(onShow)="this.onAfterShow($event)">
<p-autoComplete #autoCompleteObject>
</p-autoComplete>
<some-other-components>
<p-dialog>
打字稿:
@ViewChild('autoCompleteObject') private autoCompleteObject: AutoComplete ;
onAfterShow(event){ this.autoCompleteObject.domHandler.findSingle(this.autoCompleteObject.el.nativeElement, 'input').focus();
}
或者类似的:
@ViewChild('autoCompleteObject', {read: ElementRef}) private autoCompleteObject: ElementRef ;
onAfterShow(event){
console.log("diaglog shows");
this.autoCompleteObject.nativeElement.focus();
}
当diaglog 打开时,onAfterShow() 函数被正确执行。 但是,焦点未设置在自动完成元素上。
我哪里弄错了有什么建议吗?提前谢谢你。
【问题讨论】:
标签: angular html typescript primeng