yan*_*rab 3 angular-material angular
scrollIntoView当a打开时我打电话MaterialExpansionPanel。
opened(i) {
setTimeout(() =>
this.panels.toArray()[i].nativeElement.scrollIntoView({ behavior: 'smooth' }
));
}
Run Code Online (Sandbox Code Playgroud)
它确实有效,但如果[@.disabled]="true"没有禁用animation(),我必须等到材质动画完成,这看起来很奇怪。
有什么解决办法吗?有没有办法仅在打开时禁用动画?
顺便说一句 - 如何将元素本身发送到“打开”函数?
链接到 stackblitz。
有一个输出,您可以在其中执行您想做的两件事:afterExpanded。
你可以这样做(基于你的 stackblitz 示例):
<mat-expansion-panel *ngFor="let g of array;let i = index"
(afterExpand)="open(i,panel)"
#panel>
...
</mat-expansion-panel>
Run Code Online (Sandbox Code Playgroud)
你可以调用你的方法:
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2790 次 |
| 最近记录: |