如何设置角度或角度2而不是angularjs的自动对焦

Ani*_*Das 7 angular4 angular

我看到很多关于如何通过创建指令或HTML自动对焦在angularjs中设置自动对焦的帖子,是否有一种快速简便的方法来设置焦点角度(角度2,角度4等)

Ani*_*Das 15

在你的html add #nameit中获取它在组件代码中的引用.

<input type="text" name="me" #nameit>
Run Code Online (Sandbox Code Playgroud)

然后将自动污垢应用到其中.

  @ViewChild('nameit') private elementRef: ElementRef;

  public ngAfterViewInit(): void {
    this.elementRef.nativeElement.focus();
  }
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这可能会给 iOS 中的用户带来糟糕的体验,因为键盘会自动显示并覆盖用户屏幕的一半。仅在必须输入的组件中像这样使用它。 (2认同)

Sut*_*onY 9

Aniruddha Das的答案在某些情况下效果很好.但是,如果将此应用于具有必需验证的基于模板的表单,则可能会收到以下错误:

ExpressionChangedAfterItHasBeenCheckedError:表达式已经>检查后发生了变化.上一个值:'false'.当前值:'true'.

解决此问题的一种方法是将focus()调用包含在ngInit()中而不是ngAfterViewInit()中.因此,延伸到Aniduddha的答案:

在你的html中,将#namedReference添加到组件中:

<input type="text"
    placeholder="Your full name"
    name="name"
    ngModel
    #fullName="ngModel"
    required
    #nameit>
Run Code Online (Sandbox Code Playgroud)

然后使用onNgInit()将自动焦点应用到其中:

@ViewChild('nameit') private elementRef: ElementRef;

ngOnInit() {
    this.elementRef.nativeElement.focus();
}
Run Code Online (Sandbox Code Playgroud)