angular / angular/components

bug(CDK/SCROLLING): <object> element in *cdkVirtualFor is glitching when using "templateCacheSize: 0"

Ouverte
#28,021 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
area: cdk/scrolling P4
Langage dominant
TypeScript
Étoiles
25k
Forks
6.8k
Merge moyen
1 j 8 h
PR mergées (30 j)
91

Description

### Is this a regression?

- [ ] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

_No response_

### Description

When using No cache strategy (templateCacheSize: 0) for *cdkVirtualFor with element (as image), elements of list glitch while scrolling. Seems like cdkVirtualFor incorrectly init/reinit or reuse instances of listed elements.

When using tag instead of no bug detected.

### Reproduction

StackBlitz link: https://stackblitz.com/edit/uyv2wg?file=src%2Fexample%2Fcdk-virtual-scroll-template-cache-example.html
Steps to reproduce:
1. Create list of 100 elements, use with image link data.
2. Scroll

### Expected Behavior

Smooth scrolling, correct reusing/reinit of list elements, no content replacing.

### Actual Behavior

Scrolling is not smooth (end sometimes end / start of list is unreachable), elements in list are replaced by content of sibling.

### Environment

- Angular: 17.0.0-rc.0 (and 15)
- CDK/Material: 16.2.10
- Browser(s): Chrome
- Operating System (e.g. Windows, macOS, Ubuntu): macOs

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par la reproduction StackBlitz liée et vérifiez le comportement dans Chrome avec cdkVirtualFor, templateCacheSize: 0 et object image elements. Lisez l’implémentation du défilement virtuel de CDK autour de la réutilisation des templates et comparez-la au cas de img. C’est terminé lorsque le défilement est fluide, que tous les éléments de la liste sont accessibles et qu’aucun contenu n’est remplacé par un élément frère.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
angular, typescript
Domaine
frontend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.