如何将焦点设置到 dx-text-box?
How to set focus to dx-text-box?
我在 Angular 应用程序中使用 dev extreme UI 框架。
在文档中我找到了如何设置 focus
它说使用 method focus()
但是DxTextBoxComponent
没有焦点
如何设置焦点?
我的代码是:
@ViewChild("name", { static: false }) public inputName: DxTextBoxComponent;
ngAfterViewInit() {
this.inputName.instance.focus();
}
HTML 是:
<dx-text-box #name>
无效果
你可以这样试试
TS
@ViewChild('search', { static: false }) public searchTextBox: DxTextBoxComponent;
someFunction() {
this.searchTextBox.instance.focus();
}
HTML
<dx-text-box #search>
</dx-text-box>
<button (click)="someFunction()"></button>
您的代码看起来是正确的。确保您导入了所有必需的依赖项和 DxTextBoxComponent,并且页面上只有一个具有此标识符的 TextBox。此代码在 CodeSandbox 中不起作用(我相信此问题是 CodeSanbox 特有的),但它在本地项目和 DevExtreme Widget Gallery 中有效。在此处添加以下代码
app.component.html
<dx-text-box #name value="John Smith"></dx-text-box>
app.component.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();
}
}
我录了一个screencast。
如果 ViewChild 指令不起作用,您可以使用 onInitialized 事件处理程序获取组件的实例:
app.component.html
<dx-text-box #name (onInitialized)="getInstance($event)"></dx-text-box>
app.component.ts
export class AppComponent {
inputName: any;
getInstance(e) {
this.inputName = e.component;
}
ngAfterViewInit() {
this.inputName.focus();
}
}
我也在本地和他们的 Widget Gallery 中发了这种方法。它不需要任何额外的导入并且工作正常。
您缺少一个实例。 DxTextBoxComponent的实例是dxTextBox,它的实例有focus()方法。
ngAfterViewInit() {
this.inputName.instance.instance.focus();
}
缺点是 Angular 编译器根本不喜欢这个,所以如果你找到解决方法,请回复我 :p
以防万一。
这是 React 的工作代码:
let theInstance;
const getInstance = (e) => {
theInstance = e.component;
}
const someFunction = () => {
theInstance.focus();
}
<TextBox onInitialized={e => getInstance(e)} />
我在 Angular 应用程序中使用 dev extreme UI 框架。
在文档中我找到了如何设置 focus
它说使用 method focus()
但是DxTextBoxComponent
如何设置焦点?
我的代码是:
@ViewChild("name", { static: false }) public inputName: DxTextBoxComponent;
ngAfterViewInit() {
this.inputName.instance.focus();
}
HTML 是:
<dx-text-box #name>
无效果
你可以这样试试
TS
@ViewChild('search', { static: false }) public searchTextBox: DxTextBoxComponent;
someFunction() {
this.searchTextBox.instance.focus();
}
HTML
<dx-text-box #search>
</dx-text-box>
<button (click)="someFunction()"></button>
您的代码看起来是正确的。确保您导入了所有必需的依赖项和 DxTextBoxComponent,并且页面上只有一个具有此标识符的 TextBox。此代码在 CodeSandbox 中不起作用(我相信此问题是 CodeSanbox 特有的),但它在本地项目和 DevExtreme Widget Gallery 中有效。在此处添加以下代码
app.component.html
<dx-text-box #name value="John Smith"></dx-text-box>
app.component.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();
}
}
我录了一个screencast。
如果 ViewChild 指令不起作用,您可以使用 onInitialized 事件处理程序获取组件的实例:
app.component.html
<dx-text-box #name (onInitialized)="getInstance($event)"></dx-text-box>
app.component.ts
export class AppComponent {
inputName: any;
getInstance(e) {
this.inputName = e.component;
}
ngAfterViewInit() {
this.inputName.focus();
}
}
我也在本地和他们的 Widget Gallery 中发了这种方法。它不需要任何额外的导入并且工作正常。
您缺少一个实例。 DxTextBoxComponent的实例是dxTextBox,它的实例有focus()方法。
ngAfterViewInit() {
this.inputName.instance.instance.focus();
}
缺点是 Angular 编译器根本不喜欢这个,所以如果你找到解决方法,请回复我 :p
以防万一。 这是 React 的工作代码:
let theInstance;
const getInstance = (e) => {
theInstance = e.component;
}
const someFunction = () => {
theInstance.focus();
}
<TextBox onInitialized={e => getInstance(e)} />