打开面板后,我打给scrollIntoView
。
opened(i) {
setTimeout(() =>
this.panels.toArray()[i].nativeElement.scrollIntoView({ behavior: 'smooth' }
));
}
这是可行的,但是如果我不禁用动画([@.disabled]="true"
),则必须等到动画完成后才能看到,这看起来很奇怪。
有什么解决办法吗?有一种方法只能在打开时禁用动画吗?
顺便说一句-如何将元素本身发送到“已打开”功能?
Link进行闪电战。
答案 0 :(得分:0)
有一个输出,您可以在其中完成两项操作:afterExpanded
。
您可以做(根据您的stackblitz示例):
<mat-expansion-panel *ngFor="let g of array;let i = index"
(afterExpand)="open(i,panel)"
#panel>
...
</mat-expansion-panel>
,您只需调用您的方法即可:
open(i: number, panel: MatExpansionPanel) {
this.panels
.toArray()[i]
.nativeElement
.scrollIntoView({ behavior: 'smooth' });
// maybe you want to try doing:
//
// panel._body.nativeElement
// .scrollIntoView({ behavior: 'smooth' });
//
// But as _body is not part of the API, you must
// do it at your own risk: it can change without any
// previous warning
}