gpt4 book ai didi

angular - 如何以编程方式滚动到具 Angular Material 虚拟滚动的项目?

转载 作者:太空狗 更新时间:2023-10-29 17:18:09 26 4
gpt4 key购买 nike

我有一个包含很多项目的列表,每个项目都可以选择。为此,我使用 Angular Material Virtual Scroll。当一个项目被选中时,被选中的项目被高亮显示,然后被保存在服务器上。当我刷新页面时,所选项目来自服务器并再次突出显示。

我的代码看起来像

<cdk-virtual-scroll-viewport itemSize="40" class="wrapper">
<div *cdkVirtualFor="let item of list"
[class.selected]="item.id === selectedItem.id">
</div>
</cdk-virtual-scroll-viewport>

问题是,如果选择列表下方的项目,它会突出显示,但我必须向下滚动到列表才能看到它。当该项目来自服务器时,我想以编程方式向下滚动到它。

我是 docs有一个 scrollToIndex 方法。在哪里可以找到 FixedSizeVirtualScrollStrategy 的实例,以便调用此方法?

最佳答案

当然,您需要获取对 CdkVirtualScrollViewport 实例的引用。

@ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;

scrollToMiddle(){
this.viewPort.scrollToIndex(list.length/2, "smooth");
}

可以找到一个例子in this stackblitz

对于滚动到列表中所选元素的索引的需求,您可以执行以下操作:

ngAfterViewInit(){
const selectedIndex = this.list.findIndex(elem => elem.id === this.selectedItem.id);
if(selectedIndex > -1){
this.viewPort.scrollToIndex(selectedIndex);
}
}

注意:这假定列表已经在 ngAfterViewInit 生命 Hook 期间加载。由于您没有提供有关如何设置列表值的更多信息,这是我能提供的最好的信息。

关于angular - 如何以编程方式滚动到具 Angular Material 虚拟滚动的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54551205/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com