【问题标题】:Angular Material selectionChanged returning previous step instead of currentAngular Material selectionChanged 返回上一步而不是当前
【发布时间】:2018-04-13 12:47:59
【问题描述】:

我有一个由两列组成的页面。一个包含垂直步进器,另一个应包含每个步骤的描述。我想根据当前步骤更新此描述,因此收听 selectionChange-Event。问题是,当我查找 selectedIndex 时,我得到的是先前选择的步骤,而不是我现在所在的那个。

HTML:

<div class="row"> <div class="col-7 stepperColumn"> <mat-vertical-stepper (selectionChange)="onStepChange(eventCreationStepper)" #eventCreationStepper> <!--some steps--> </mat-vertical-stepper> </div> <div class="col-5"> <!--some descriptions--> </div> </div>

JS:

public onStepChange(stepper: MatStepper) { console.log(stepper.selectedIndex); }

【问题讨论】:

    标签: javascript angular angular-material


    【解决方案1】:

    起初这似乎是一种奇怪的行为,但在考虑之后我意识到这是因为您在更改步骤之前通过模板引用,所以到达您的方法中的对象仍然指向前一个步。

    看起来解决方案是从selectionChange方法传递的事件对象中获取new索引,如下所示:

    HTML:

    <mat-vertical-stepper (selectionChange)="onStepChange($event)">
    

    TS:

    public onStepChange(event: any): void {
      console.log(event.selectedIndex);
    }
    

    这应该可以解决您的问题。

    【讨论】:

    • 我也想过这个,但是老实说,在步骤更改后无法弄清楚如何获得新的索引。另一方面,我最初认为我的第一个解决方案应该可以工作,因为文档说该方法将在步骤更改后触发。不过,谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 2021-10-04
    相关资源
    最近更新 更多