angular / angular/components

Reactive forms inside virtual scroll list yield buggy behaviour

Open
#13,846 9 comments 2 reactions 0 assignees View on GitHub
area: cdk/scrolling P3
Dominant language
TypeScript
Stars
25k
Forks
6.8k
Avg merge
1d 8h
Merged PRs (30d)
91

Description

## I'm submitting a...



[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report
[ ] Performance issue
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
[ ] Other... Please describe:

## Current behavior

Reactive forms inside a virtual scroll list, should behave as expected. It looks like virtual scroll takes over and manipulates index which yields in erratic behaviour. If we check the last item in form array as checked and then go back to top and come back again to bottom, it is marked checked again. Tried external index as well but that didn't help either.

## Expected behavior

Reactive forms especially checkboxes should behave normally, and their values should belong to
appropriate ones only. Marking one checked should not affect others.

## Minimal reproduction of the problem with instructions

## What is the motivation / use case for changing the behavior?

For heavy or huge reactive forms, virtual lists should render form controls normally.

## Environment
Angular 7 and CDK 7



Angular version: 7.0.0

Browser:
- [x] Chrome (desktop) version 67.0.3396.87
- [x] Firefox version latest
- [x] Safari (desktop) version 12
- [x] IE version 11

Others:
Code sample can be seen on [stackblitz](https://stackblitz.com/edit/angular-mnd3k1) or [here](https://stackblitz.com/edit/angular-mnd3k1)

Contributor guide

Open the contributing guide

Research direction

Start by running the linked StackBlitz reproduction and inspect the interaction between the Angular CDK virtual scroll list and reactive-form checkbox values while scrolling. Reproduce the reported sequence of checking the last item, returning to the top, and scrolling back to the bottom; done means each checkbox retains only its own value across that sequence in the listed browsers.

Written by the indexing model from the issue text.

Assessment

Tech stack
angular, typescript
Domain
frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.