2

我有一个基于 Cdk 的自定义步进器,但它是动态的。所以它绑定到一个FormArray。当一个项目被添加到 formArray 时,我需要重定向到最新的步骤。CdkStepper 似乎不会触发将项目添加到步骤集合的任何事件。

我尝试订阅 FormArray 上的 valueChange,但它在添加新步骤之前触发。

这是一个带有设置的堆栈闪电战。

4

1 回答 1

3

CdkStepper具有一个_steps: QueryList<CdkStep>属性,该属性具有一个属性,该changes: Observable<any> 属性将值作为添加到CdkStepper.

但是,在OnInit _steps属性上使用时似乎尚未填充。因此,使用settimeout等待下一个更改检测周期进行_steps初始化可以解决问题。在您的示例中,更改CustomStepperComponent如下:

ngOnInit() {
  setTimeout(()=>{
    this._steps.changes.subscribe(x => {
      this.selectedIndex = x.length - 1;
    });
  });
}

这是我的工作演示

https://stackblitz.com/edit/angular-cdkstepper-formarray-jnftgb

顺便说一句,_steps属性已被弃用"@angular/material": "8.0.0"

于 2019-06-14T14:57:46.200 回答