我正在使用@angular/material
的步进器,我有一些行为无法完全解释。我使用的是一个数组,其中放入了一个formgroup。这个数组是ngFor
的源,我将该项传递给步骤。当我从数组中删除一个项目时,mat-step's
就不见了。但清单上仍然充满了项目。
顺便说一句,使用trackyby并没有帮助。唯一有帮助的是在更改状态之前选择不同的步骤(见第51行(
场景:
- 填写表格
- 单击添加一个项目
- 填写表格
- 按下删除一项
- 看到台阶消失
Stacklitz 示例
问题:为什么会发生这种情况?
我认为这是由于this.selectedIndex
。因为在拼接之后,并没有具有selectedIndex的项目。因此,您可以更改removeone函数,如下所示。
public removeone() {
console.error('remove: ', this.selectedIndex)
/** REMOVE THE LINE BELOW TO LET THE STEPS STAY ON THE SCREEN */
// this.stepper._steps.first.select();
var selected = this.selectedIndex;
this.stepper._stateChanged();
this.change.detectChanges();
this.stepper.previous();
this._list.splice(selected, 1);
}