滚动到材质扩展面板中的视图而无需禁用动画

时间:2019-08-05 08:01:59

标签: angular angular-material

打开面板后,我打给scrollIntoView

opened(i) {
    setTimeout(() =>
        this.panels.toArray()[i].nativeElement.scrollIntoView({ behavior: 'smooth' }
    ));
}

这是可行的,但是如果我不禁用动画([@.disabled]="true"),则必须等到动画完成后才能看到,这看起来很奇怪。

有什么解决办法吗?有一种方法只能在打开时禁用动画吗?

顺便说一句-如何将元素本身发送到“已打开”功能?

Link进行闪电战。

1 个答案:

答案 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
}