You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mat-vertical-stepper点击Next后自动滚动至步骤起始位置

解决mat-vertical-stepper切换步骤后自动滚动至当前步骤顶部

针对长表单使用mat-vertical-stepper时,点击Next后页面滚动位置保留导致新步骤从底部开始显示的问题,可通过监听步骤切换事件,自动滚动到当前步骤起始位置解决,具体实现如下:

步骤1:模板层添加引用与事件绑定

给<mat-vertical-stepper>添加模板引用变量,并绑定selectionChange事件:

<mat-vertical-stepper #stepper (selectionChange)="onStepChange($event)">
  <!-- 你的步骤表单内容 -->
</mat-vertical-stepper>

步骤2:组件层实现滚动逻辑

通过ViewChild获取stepper实例,在步骤切换时定位到当前步骤的标题元素并执行滚动:

import { Component, ViewChild } from '@angular/core';
import { MatVerticalStepper, StepperSelectionEvent } from '@angular/material/stepper';

@Component({
  // 组件元数据(如selector、templateUrl等)
})
export class YourStepperComponent {
  @ViewChild('stepper') stepper!: MatVerticalStepper;

  onStepChange(event: StepperSelectionEvent) {
    // 获取当前激活步骤的标题DOM元素
    const activeStepTitle = this.stepper.selected?.stepLabel._elementRef.nativeElement;
    if (activeStepTitle) {
      // 平滑滚动到元素顶部,block: 'start'确保标题对齐视口上方
      activeStepTitle.scrollIntoView({ behavior: 'smooth', block: 'start' });
    }
  }
}

可选调整

  • 若需要滚动到整个步骤容器的顶部,可替换目标元素为步骤的父容器DOM节点
  • 若不需要平滑滚动,将behavior设为'auto'即可实现瞬间定位

内容的提问来源于stack exchange,提问作者Blackhole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:35:20