Отложенная загрузка изображений не выполняется после обновления до Angular 9 - PullRequest
0 голосов
/ 06 августа 2020

После обновления с Angular 8.2.14 до 9.1.12 мы столкнулись с проблемами с отложенной загрузкой изображений, реализованной в нашем приложении.

Перед обновлением до Angular 9 при загрузке страницы первоначально видимые заполнители были заменены, как и предполагалось. После обновления Element.getBoundingClientRect первоначально возвращает позиции, которые в основном находятся вне области просмотра, и загружаются только первые несколько изображений. Видимость проверяется в директиве ngAfterContentInit.

Если вместо этого проверяется видимость в ngDoCheck, это в конечном итоге работает, позиции, возвращаемые Element.getBoundingClientRect в конечном итоге совпадают положения изображений в области просмотра. Но метод вызывается так часто, что производительность заметно ухудшается. Других обходных путей я не нашел.

Но во время прокрутки ленивая загрузка работает по назначению. Проблема возникает только при загрузке страницы.

Но если Ivy отключен в tsconfig.app. json ленивая загрузка работает так же, как и до обновления до Angular 9.

"angularCompilerOptions": {
  "enableIvy": false
}

Так что проблема, похоже, связана с Айви. Есть ли какие-то изменения в Айви, объясняющие эту проблему? Обнаружение изменений, похоже, отличается для Ivy, поскольку без Ivy положение элементов изображения уже было завершено в ngAfterContentInit (положение соответствует его видимому положению), тогда как с Ivy Элементы имеют другое положение, которое отличается от его конечных положений.

Мы приветствуем любые предложения по исправлению или обходному решению этой проблемы.

...