6

I am using cdk-virtual-scroll-viewport to dynamically render items a small set at a time as the user scrolls.

The viewport only displays 5 items, regardless of the height given to the cdk-virtual-scroll-viewport element.

In the component, I load an array of 100 strings.

Each item is 48px in height. The viewport is set to 480px in height. So, I expect to see 10 items at a time. It only renders 5.

In the html:

                <cdk-virtual-scroll-viewport itemSize="48" class="viewport">
                    <mat-option *cdkVirtualFor="let person of filteredPersons"
                        [value]="person" class="animated slideInRight">
                        <div class="option-user">
                            <img class="image-cropper"
                                src="......"
                                alt="User Picture" />
                            {{person}}
                        </div>
                    </mat-option>
               </cdk-virtual-scroll-viewport>

In the css:

.viewport {
    height: 480px; 
}

.option-user {
    height: 48px;
    display: flex;
    flex-direction: row;
    align-items: center;
}

3 Answers 3

9

I had the same bug and just fixed increasing default values of minBufferPx and maxBufferPx.

1

Take a look at this example angular-virtual-scroll-example

if you have any other problem share an example.

1
  • I wonder if it could be related to using a dialog with the virtual scroll component?
    – Darrell
    Commented Apr 14, 2020 at 21:27
-1

Add the following in global file

cdk-virtual-scroll-viewport {
  height: 100%;
  width: 100%;
}

Not the answer you're looking for? Browse other questions tagged or ask your own question.