如何将焦点设置到 dx-text-box?

OPV*_*OPV 3 devextreme angular devextreme-angular angular7 angular8

我在 Angular 应用程序中使用devExtreme UI 框架。

在文档中我找到了如何设置focus它说使用method focus()

但没有重点DxTextBoxComponent

如何设定焦点?

我的代码是:

@ViewChild("name", { static: false }) public inputName: DxTextBoxComponent;

  ngAfterViewInit() {
    this.inputName.instance.focus();
  }
Run Code Online (Sandbox Code Playgroud)

HTML 是:

<dx-text-box #name>
Run Code Online (Sandbox Code Playgroud)

没有效果

小智 5

你的代码看起来是正确的。确保您导入了所有必需的依赖项和 DxTextBoxComponent,并且页面上只有一个具有此标识符的 TextBox。此代码在 CodeSandbox 中不起作用(我相信此问题特定于 CodeSanbox),但它在本地项目和 DevExtreme Widget Gallery中起作用。在那里添加以下代码

应用程序组件.html

<dx-text-box #name value="John Smith"></dx-text-box>
Run Code Online (Sandbox Code Playgroud)

应用程序组件.ts

//additional imports
import { ViewChild } from '@angular/core';
import { DxTextBoxComponent } from 'devextreme-angular';

//replace the AppComponent with this code
export class AppComponent {
    @ViewChild("name", { static: false }) inputName: DxTextBoxComponent;
    
    ngAfterViewInit() {
        this.inputName.instance.focus();
    }
}
Run Code Online (Sandbox Code Playgroud)

我录制了一个截屏视频

如果 ViewChild 指令不起作用,您可以使用onInitialized事件处理程序获取组件的实例:

应用程序组件.html

<dx-text-box #name (onInitialized)="getInstance($event)"></dx-text-box>
Run Code Online (Sandbox Code Playgroud)

应用程序组件.ts

export class AppComponent {
   inputName: any;

   getInstance(e) {
      this.inputName = e.component;
   }

   ngAfterViewInit() {
      this.inputName.focus();
   }
}
Run Code Online (Sandbox Code Playgroud)

我还在本地和他们的小部件库中发了短信这种方法。它不需要任何额外的导入并且工作正常。