我有一个基于 Cdk 的自定义步进器,但它是动态的。所以它绑定到一个FormArray。当一个项目被添加到 formArray 时,我需要重定向到最新的步骤。CdkStepper 似乎不会触发将项目添加到步骤集合的任何事件。
我尝试订阅 FormArray 上的 valueChange,但它在添加新步骤之前触发。
我有一个基于 Cdk 的自定义步进器,但它是动态的。所以它绑定到一个FormArray。当一个项目被添加到 formArray 时,我需要重定向到最新的步骤。CdkStepper 似乎不会触发将项目添加到步骤集合的任何事件。
我尝试订阅 FormArray 上的 valueChange,但它在添加新步骤之前触发。
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"