材料角度:自动滚动到无效输入并打开matstepper。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了材料角度:自动滚动到无效输入并打开matstepper。相关的知识,希望对你有一定的参考价值。

我希望有人能帮助我;我的问题是,如果它是可能的,或者如果有一个模块滚动到无效字段,并打开包含该字段的matstepper。

我尝试使用ngxScrollToFirstInvalid,但它不能打开mat stepper。

现在我有这样的代码。

scrollTo(el: Element): void {
    if(el) {
     el.scrollIntoView({ behavior: 'smooth' });
    }
 }

 scrollToError(): void {
    const firstElementWithError = document.querySelector('.ng-invalid');
    this.scrollTo(firstElementWithError);
 }

 async scrollIfFormHasErrors(form: FormGroup): Promise <any> {
   await form.invalid;
   this.scrollToError();
 }

这是我找到的一个解决方案,但我尝试使用它,但它不工作。

对不起,我的英语不好。

问题是,是否有一个函数可以找到并打开包含第一个无效字段的mat-stepper。

谅谅

答案

使用matstepper实例,你可以得到表单状态。然后我们就可以程序化地导航到无效步骤。首先,为了得到mat-stepper实例,你必须将#stepper模板varibale放在mat-vertical-component上,像这样。

<mat-vertical-stepper #stepper [linear]="isLinear">

现在在你的ts中添加ViewChild,像这样来获取steppper实例。

@ViewChild('stepper') private myStepper: MatStepper;

最后,你可以使用stepControl属性来检查单个表单的状态,像这样,通过设置selectedIndex来导航到无效的步骤。

 scrollToError(): void {
    const steps = this.myStepper._steps.toArray();
     for(let i = 0; i < steps.length -1; i++ ){
        if(!steps[i].stepControl.valid){
       this.myStepper.selectedIndex = i;  
       return ;
    }
  }

叉叉的例子

以上是关于材料角度:自动滚动到无效输入并打开matstepper。的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CdkScrollable 检测角度材料 2 自动完成列表上的滚动事件

角度材料自动完成 - 如何防止键盘输入以在建议面板中选择一个选项

角度材料 - mat-error 不显示输入字段的错误消息

角度材料 - 标签与输入重叠

角度材料 - 标签与输入重叠

角度材料自动完成力选择不起作用