标签: virtualscroll

用于角度 4 可变/动态高度图像的虚拟滚动

我正在实现一个像 twitter 这样包含图像和文本的提要屏幕。我正在使用 angular 4。目前我正在使用Virtual Scroll来提高用户滚动深度(如 100 个项目)时的性能。我的问题是在我的列表中所有项目的大小都是可变的,并且这个库不完全支持动态高度。就像需要一些最小的固定高度。这会导致在移动设备和某些浏览器中闪烁。如果可能的话,我想用 Angular 实现 React Js Virtual scroll。任何人都可以向我建议任何解决方案,以便我的提要列表变得顺畅。

angular-material2 angular virtualscroll

5
推荐指数
1
解决办法
1万
查看次数

带材质表的角度6中的虚拟滚动

我想使用带有角度材质表的虚拟滚动条。而且我不想使用分页功能。我的代码如下。

<mat-table [dataSource]="dataSource">
        <ng-container matColumnDef="psa_invoice_number">
          <mat-header-cell [style.flex]="'0 0 10%'" *matHeaderCellDef><span> INV NO. </span></mat-header-cell>
          <mat-cell *matCellDef="let element">
            <span> {{element.psa_invoice_number}} </span>
          </mat-cell>
        </ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></mat-header-row>
        <mat-row  *matRowDef="let row; columns: displayedColumns;"></mat-row>
      </mat-table>
Run Code Online (Sandbox Code Playgroud)

angular-material angular virtualscroll

5
推荐指数
0
解决办法
1194
查看次数

如何为表tbody使用cdk-virtual-scroll-viewport

由于HTML解析tr然后td,使用<cdk-virtual-scroll-viewport>中断视图是否有任何cdkVirtualScrollViewport作为指令<tbody>

<tbody>
<cdk-virtual-scroll-viewport  style="height: 500px; width: 100%;"  itemSize="100"
    <tr [hidden]="data.get_user.name.toLowerCase().indexOf(pupilFilter.name.toLowerCase()) < 0 || (pupilFilter.classValue != '0' && data.get_class.value != pupilFilter.classValue)" appMarkClicked="" *cdkVirtualFor="let data of top.data.branch.get_users_as_pupil; let i = index" >
        <td>{{i + 1}}</td>
    </tr>
</cdk-virtual-scroll-viewport>
</tbody>
Run Code Online (Sandbox Code Playgroud)

angular virtualscroll angular-cdk angular7

5
推荐指数
1
解决办法
2166
查看次数

是否可以将 CDK Virtual Scroll Viewport 与 CDK A11y - ActiveDescendantKeyManager 一起使用?

我使用<cdk-virtual-scroll-viewport>固定项目大小进行虚拟滚动。

此外,我使用ActiveDescendantKeyManagerCDK A11y 提供的功能在视口内使用箭头键移动。

当我尝试同时使用它们时,出现以下问题:

由于虚拟滚动仅加载部分信息并在滚动(回收视图)时加载更多信息,因此ActiveDescendantKeyManager仅获取<cdk-virtual-scroll-viewport>. 当我加载更多时,索引会重复自己,因为虚拟滚动添加和删除项目,keyManager只是行为很奇怪,因为我希望索引按顺序排列(如果我有 5000 个项目,我希望索引按顺序排列,而不仅仅是从1-24,每次我滚动它们都会重复)。 这是 stackblitz 上的一个例子

我的问题是:有什么办法可以与他们一起工作吗?因为我想做的是用箭头键移动到以下滚动索引。

accessibility angular virtualscroll angular-cdk

5
推荐指数
0
解决办法
1139
查看次数

具有可变项目高度的cdk-virtual-scroll-viewport

我想用 cdk-virtual-scroll-viewport在时间线视图中使用不同高度的项目。

因此itemSize="x",根据文档参考设置列表中项目的大小(以像素为单位)是不切实际的。

autosize 尚不可用。

可以使用cdk-virtual-scroll-viewport可变大小的虚拟/无限滚动吗?

更新资料

我一直在寻找替代的虚拟/无限滚动解决方案,而且我几乎无法相信,似乎没有解决方案可用于动态行高,即使使用https://github.com/rintoj/ngx-virtual-scroller也不推荐使用。

更新2,2019年7月

由于与此同时仍然没有解决方案,因此我认为解决此问题的“足够好”的方法是加载固定数量的项目,并在列表底部添加一个按钮以加载更多项目,如本示例所示:https://stackblitz.com/edit/ang-mat-load-more

angular virtualscroll angular7

5
推荐指数
2
解决办法
2703
查看次数

如何在 cdk-virtual-scroll-viewport 内滚动时触发?

我在 Angular 7 中使用虚拟滚动。我创建了一个CdkVirtualScrollViewport监听器,并为每个滚动事件添加一个监听器。我的意思是我希望在该视口内滚动时收到通知。

我尝试注入scrollDispatcher我的组件,但我看到它scrolled()是在整个组件上滚动时触发的,然后我发现它绑定到组件而不是仅绑定到CdkVirtualScrollViewport.

这是我的代码:

@ViewChild(CdkVirtualScrollViewport) virtualScroll: CdkVirtualScrollViewport;

items: Array<any>;

constructor(private scrollDispatcher: ScrollDispatcher, private cd: ChangeDetectorRef) {
this.items = [];
}

ngOnInit(): void {
  for (let i = 0; i < 100; i++) {
    this.items.push(i);
  }
}

ngAfterViewInit(): void {
this.scrollDispatcher.scrolled()
  .subscribe(event => {
    console.log('scrolled');
  });
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,CdkVirtualScrollViewport这是我的组件内的一个子元素:

<div class="header">
  {{header}}
</div>

<div class="container">
  <cdk-virtual-scroll-viewport itemSize="4" class='example-viewport'>
    <li *cdkVirtualFor="let item of items" class='example-item' >{{item}}</li>
  </cdk-virtual-scroll-viewport>
</div>

<div class="footer">
  {{footer}} …
Run Code Online (Sandbox Code Playgroud)

events scroll angular virtualscroll

5
推荐指数
1
解决办法
2万
查看次数

Angular cdk-virtual-scroll-viewport 鼠标滚动仅在水平方向上无法使用鼠标滚轮工作

有什么方法可以激活cdk-virtual-scroll-viewport水平方向的鼠标滚动吗?

正如我们在角度材料的示例中看到的那样,您只能通过从滚动条拖动来滚动,但不能仅使用鼠标滚轮进行滚动。

https://material.angular.io/cdk/scrolling/overview

我的目的是拥有一个像 Netflix 一样带有图像的组件,并且只需使用鼠标滚轮即可滚动它们。

第二个问题是:有人有这方面的例子吗?

我想实现这样的目标:

https://codepen.io/CalvinMorett/post/incorporate-horizo​​ntal-scrolling-mousewheel

horizontal-scrolling angular-material angular virtualscroll

5
推荐指数
1
解决办法
2282
查看次数

如何制作虚拟卷轴?

请教我如何制作虚拟卷轴。我使用 HTML、JS、Vue。我尝试使用vue-virtual-scroll,但是由于很难将其更改为我想要的功能,因此我将制作一个基本部分并应用它。请告诉我如何制作基本的虚拟卷轴。

vue.js virtualscroll

4
推荐指数
1
解决办法
5388
查看次数

带有mat-grid-list的cdk virtualscroll

是否有与网格列表配合使用的虚拟滚动实现?我认为默认实现不会起作用,因为每一行周围都应有一个元素。

我正在使用网格列表显示个人资料图片,并且需要无限滚动或最好是虚拟滚动才能加载新的图片。

angular-material2 virtualscroll angular-cdk angular7

3
推荐指数
1
解决办法
1688
查看次数

使用虚拟滚动调整下拉菜单 Angular7 自动完成的高度

我正在为我的应用程序使用 Angular-Material Autocomplete(版本 7)。我用的是<cdk-virtual-scroll-viewport>里面的 除了我已经解决的许多问题之外,还有一个我不明白的问题:

当我添加 max-height css 时,下拉菜单不会显示,如果我添加高度,它将以固定高度显示。

这是我的代码的一部分:html:

<mat-form-field class="single-select">
  <input matInput #singleInput class="single-input layout flex" type="text" [formControl]="selectControl" [matAutocomplete]="auto" (blur)="onBlur()" (focus)="onFocus()">

  <mat-autocomplete class="single-autocomplete" #auto="matAutocomplete" [displayWith]="displayFn">
    <cdk-virtual-scroll-viewport itemSize="45" minBufferPx="360" maxBufferPx="360" class="virtual-scroll">
      <mat-option *cdkVirtualFor="let option of filteredOptions" [class.selected]="option === oldValue" [value]="option" (click)="onSelect(option)">{{option.label}}</mat-option>
    </cdk-virtual-scroll-viewport>
  </mat-autocomplete>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

TS:

export class SingleSelectComponent implements OnInit {
  @Input() value;
  @Input('options')
  set options(value) {
    if (value) {
      this.filteredOptions = value.slice();
      this.data = value;
      this.initValue();
    }
  }
  @Output() formValue = new EventEmitter<any>();

  @ViewChild('singleInput') singleInput;

  selectControl …
Run Code Online (Sandbox Code Playgroud)

autocomplete angular virtualscroll angular-material-7

3
推荐指数
1
解决办法
1万
查看次数