使用Angular的ElementRef设置离子文本区域的焦点:“类型'ElementRef'不存在属性'setFocus'。”

时间:2018-08-16 17:24:12

标签: angular typescript ionic-framework ionic3

我创建了一个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还是类似的东西?

1 个答案:

答案 0 :(得分:5)

尝试一下

使用ViewChild装饰器获取dom元素

@ViewChild('ref') ref:TextInput;

然后使用dom中的textarea的nativeElement,其中包括聚焦方法。

ngAfterViewInit() {
    if(this.text.length===0){
    this.ref['_native'].nativeElement.focus();
    }
  }

示例:https:https://stackblitz.com/edit/ionic-hatcjc