我创建了一个 textarea 组件,当它在 ngAfterViewInit() 方法中创建时,它会自动聚焦:
ngAfterViewInit() {
if(this.text.length===0){
this.theinput.setFocus();
}
}
它工作得很好,行为完全符合我的预期。
我正在使用 ElementRef 来获取 ion-textarea 组件:
@ViewChild('name') theinput: ElementRef;
<ion-textarea #name rows="1" ></ion-textarea>
但是,在运行
ionic serve
并构建应用程序时,它不会构建并显示错误:"Property 'setFocus' does not exist on type 'ElementRef'."
在
this.theinput.setFocus()
代码行。如果我注释掉这行代码,构建应用程序,然后取消注释 - 一切都按预期工作。然而,这不是一个好的解决方案。
像这样的问题有更好的解决方法吗?扩展 ElementRef 或类似的东西?
最佳答案
试试这个
使用 ViewChild 装饰器获取 dom 元素
@ViewChild('ref') ref:TextInput;
然后使用 nativeElement ,它是 dom 中的 textarea ,其中包含 focus 方法。
ngAfterViewInit() {
if(this.text.length===0){
this.ref['_native'].nativeElement.focus();
}
}
示例:https: https://stackblitz.com/edit/ionic-hatcjc
关于angular - 使用 Angular ElementRef : "Property ' setFocus' does not exist on type 'ElementRef' . 设置 ion-textarea 的焦点“,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51882397/