angular - Angular - 带有选项卡视图的启动对话框,具有简单的引导表单,不会自动聚焦到每个选项卡表单
问题描述
我们有一个primeng对话框,其中有多个分别显示表单的选项卡。默认的第一个选项卡被打开,当我们点击 rest tabs 时,相应的表单被打开。一般来说,什么是显示自动对焦到表单第一个字段的有效方法,因为选项卡已经加载并且我们正在选项卡表单之间切换?
<p-tabView>
<p-tabPanel>Form1</p-tabPanel>
<p-tabPanel>Form2</p-tabPanel>
<p-tabPanel>Form3</p-tabPanel>
</p-tabView>
解决方案
您可以为输入元素分配一个模板引用变量#myInput:
<input type="text" [(ngModel)]="title" #form1Input />
让您的组件实现 AfterViewInit,使用 ViewChild 注释获取输入元素的引用,并将您的元素聚焦在 ngAfterViewInit 钩子中:
export class MyComponent implements AfterViewInit {
@ViewChild("form1Input") private formOneInputElement: ElementRef;
@ViewChild("form2Input") private formTwoInputElement: ElementRef;
@ViewChild("form3Input") private formThreeInputElement: ElementRef;
[...]
onTabChange(event: Event): void {
switch(event.index) {
case 0 : {
this.formOneInputElement.nativeElement.focus();
break;
}
case 1 : {
this.formTwoInputElement.nativeElement.focus();
break;
}
case 2: {
this.formThreeInputElement.nativeElement.focus();
break;
}
}
}
}
推荐阅读
- html - CSS 动画 - filter:blur() 不能与 transform:scale() 一起使用
- least-squares - 当使用仅具有 1 个未知参数的 optimize.least_square 时,与残差数组的形状相关的问题
- typescript - 如何迭代打字稿中的对象?
- mysql - 如何加快 SELECT FOR UPDATE 和 UPDATE 的事务处理?
- javascript - 自定义形状的 Highchart 词云
- javascript - 递归回文不返回既不真也不假,只返回未定义
- node.js - Redis不缓存,每次都去MongoDB
- javascript - 如何从javascript中的x或y以外的数组中删除元素
- javascript - React:倒数计时器,如何每秒减少一个状态值?
- unreal-engine4 - Unreal 4.25 - 不能在基于“对象”类的蓝图中使用“GetAllActorsOfClass”