我创建了一个textarea组件,当它在ngAfterViewInit()方法中创建时会自动聚焦:
ngAfterViewInit() {
if(this.text.length===0){
this.theinput.setFocus();
}
}
它工作得很好,行为与我的预期完全匹配。
我正在使用ElementRef来获取离子文本区域组件:
@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还是类似的东西?
答案 0 :(得分:5)
尝试一下
使用ViewChild装饰器获取dom元素
@ViewChild('ref') ref:TextInput;
然后使用dom中的textarea的nativeElement,其中包括聚焦方法。
ngAfterViewInit() {
if(this.text.length===0){
this.ref['_native'].nativeElement.focus();
}
}