- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在第一步单击“下一步”按钮后,如何以编程方式将焦点设置为“地址”输入,以便在从第 1 步(“填写您的姓名”)转到第 2 步(“填写您的地址”)之后。
https://stackblitz.com/angular/onnbkqrydrg?file=app%2Fstepper-overview-example.ts https://material.angular.io/components/stepper/overview
这是我想要实现的:
我已经在试验 MatStepper 的 selectionChange 事件,但它似乎在步骤 2 可见之前被触发,所以它不起作用。
最佳答案
您使用选择 Change 事件走在正确的道路上。查看 fork 的 StackBlitz:
您要做的是为您的输入元素分配一个id
,该元素可以与步进器的选定索引关联使用,例如:
<mat-step [stepControl]="firstFormGroup">
<form [formGroup]="firstFormGroup">
<ng-template matStepLabel>Fill out your name</ng-template>
<mat-form-field>
<input id="input0" matInput placeholder="Last name, First name" formControlName="firstCtrl" required>
</mat-form-field>
<div>
<button mat-button matStepperNext>Next</button>
</div>
</form>
</mat-step>
<mat-step [stepControl]="secondFormGroup">
<form [formGroup]="secondFormGroup">
<ng-template matStepLabel>Fill out your address</ng-template>
<mat-form-field>
<input id="input1" matInput placeholder="Address" formControlName="secondCtrl" required>
</mat-form-field>
<div>
<button mat-button matStepperPrevious>Back</button>
<button mat-button matStepperNext>Next</button>
</div>
</form>
</mat-step>
然后通过使用选择 (selectionChange) 事件,您可以在等待它显示在 DOM 中后将焦点设置在输入元素上:
export class StepperOverviewExample implements AfterViewInit {
isLinear = false;
firstFormGroup: FormGroup;
secondFormGroup: FormGroup;
public targetInput = 'input0';
constructor(private _formBuilder: FormBuilder) { }
ngOnInit() {
this.firstFormGroup = this._formBuilder.group({
firstCtrl: ['', Validators.required]
});
this.secondFormGroup = this._formBuilder.group({
secondCtrl: ['', Validators.required]
});
}
ngAfterViewInit() {
this.setFocus();
}
private setFocus() {
let targetElem = document.getElementById(this.targetInput);
setTimeout(function waitTargetElem() {
if (document.body.contains(targetElem)) {
targetElem.focus();
} else {
setTimeout(waitTargetElem, 100);
}
}, 100);
}
onChange(event: any) {
let index = String(event.selectedIndex);
this.targetInput = 'input' + index;
this.setFocus();
}
}
关于angular - 在 MatStepper 进入下一步后焦点输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49011701/
我正在我的一个组件中实现一个 mat-horizontal-stepper,如果我在 [completed] 属性为 false 但这并没有发生。 我不确定使用 completed 属性或类似
在第一步单击“下一步”按钮后,如何以编程方式将焦点设置为“地址”输入,以便在从第 1 步(“填写您的姓名”)转到第 2 步(“填写您的地址”)之后。 https://stackblitz.com/an
目前,用户只能使用 Material create 和 done 图标作为步骤标题。这些更改通过提供具有覆盖的 ng-template 添加了自定义图标的能力。所以我找到了update但是当我把它用作
我在编译我的 Angular 网站时遇到问题。我已经通过 npm 安装了所有必要的依赖项,但它不起作用。我也使用 Material Angular。这就是问题所在,没有它就可以工作。 日志: webp
我是一名优秀的程序员,十分优秀!