MTZ*_*MTZ 7 angular-material angular virtualscroll angular-cdk angular-cdk-virtual-scroll
我有一个包含很多项目的列表,可以选择每个项目。为此,我使用了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>
Run Code Online (Sandbox Code Playgroud)
问题是,如果选择列表中下方的项目,则该项目将突出显示,但是我必须向下滚动至列表才能看到它。当该项目来自服务器时,我想以编程方式向下滚动至该项目。
我的文档中有一种scrollToIndex方法。在哪里可以找到的实例FixedSizeVirtualScrollStrategy,因此可以调用此方法?
Jot*_*edo 10
当然,您需要获取对该CdkVirtualScrollViewport实例的引用。
@ViewChild(CdkVirtualScrollViewport) viewPort: CdkVirtualScrollViewport;
scrollToMiddle(){
this.viewPort.scrollToIndex(list.length/2, "smooth");
}
Run Code Online (Sandbox Code Playgroud)
可以在此堆叠闪电中找到一个示例
对于滚动到列表中所选元素的索引的要求,可以执行以下操作:
ngAfterViewInit(){
const selectedIndex = this.list.findIndex(elem => elem.id === this.selectedItem.id);
if(selectedIndex > -1){
this.viewPort.scrollToIndex(selectedIndex);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:这假设列表在ngAfterViewInit生命周期内已经加载。由于您还没有提供有关如何设置列表值的更多信息,因此这是我能提供的最好的方法。
| 归档时间: |
|
| 查看次数: |
3200 次 |
| 最近记录: |