本机DOM元素的Angular 2 onload事件

Pho*_*ynh 19 html javascript angular

我的最终目标是让textarea元素自动聚焦于创建.我刚刚想到了一个调用e.target.focus()事件的解决方案onload.就像是:

<textarea rows="8" col="60" (load)='handleLoad($event)'>
Run Code Online (Sandbox Code Playgroud)

然后:

handleLoad(e){
  e.target.focus();
}
Run Code Online (Sandbox Code Playgroud)

问题是角度无法识别load事件.

PS:我试过autofocus一次,但似乎没有用.

dfs*_*fsq 27

您应该能够在ngAfterViewInit钩子中执行此操作:

import { ViewChild, ElementRef, AfterViewInit } from '@angular/core'

// ...

export class Component implements AfterViewInit {

  @ViewChild('textarea') textarea: ElementRef

  ngAfterViewInit() {
    this.textarea.nativeElement.focus()
  }
}
Run Code Online (Sandbox Code Playgroud)

在模板中,您需要设置模板变量:

<textarea #textarea rows="8" col="60"></textarea>
Run Code Online (Sandbox Code Playgroud)


jes*_*nho 9

试试HTML5 autofocus属性:

<textarea rows="8" col="60" autofocus>
Run Code Online (Sandbox Code Playgroud)

总是更好(并且更简单!)尽可能使用原生DOM API而不是在JavaScript中使用它:)

编辑:以上是不正确的.请参阅下面的评论.