cdkvirtual для не работает, когда у нас меньше данных для повторения - PullRequest
0 голосов
/ 24 февраля 2020

Когда я фильтрую массив, у нас меньше данных, мы не получаем вертикальную прокрутку. Так что *cdkVirtualFor не перерисовывает пользовательский интерфейс. Это работает, когда у нас есть больше данных.

Если я использую *ngFor всегда, это работает.

Использование * ngFor - лучший выбор для моего случая, или все же мы можем использовать * cdkVirtualFor и внести некоторые изменения, чтобы это исправить?

или это связано с высотой cdk-virtual-scroll-viewport?

1 Ответ

0 голосов
/ 09 марта 2020

в FixedSizeVirtualScrollStrategy, который используется по умолчанию, есть метод с именем onDataLengthChanged. он вызывается только при изменении ссылки на переданные элементы. поэтому, чтобы увидеть эффект, вы должны заменить весь массив элементов. другими словами, вы должны видеть ваш массив как неизменный массив. например, если у меня есть массив из 100 элементов и я выполняю приведенный ниже код, виртуальная прокрутка не будет обновляться сама по себе, потому что ссылка на массив не изменилась.

    let i = 90;
    while (i > 0) {
      i--;
      this.items.pop();
    }

, но если я заменю ссылку на массив с кодом, как показано ниже. это поймет. и обнови себя

this.items = this.items.splice(0, 10);
...