更新到Angular 9后,图像的延迟加载失败

时间:2020-08-06 14:20:28

标签: angular angular9 angular-ivy

从Angular 8.2.14升级到9.1.12后,我们在应用程序中实现的图像的延迟加载遇到了问题。

在加载页面时更新到Angular 9之前,按预期替换了最初可见的占位符。更新后,Element.getBoundingClientRect最初返回的位置大多位于视口之外,并且仅加载了前几个图像。在指令的 ngAfterContentInit 中检查可见性。

如果相反地在 ngDoCheck 中检查了可见性,则Element.getBoundingClientRect返回的位置最终将与图像在视口中的位置匹配。但是这种方法经常被调用,以至于性能明显下降。我还没有找到其他解决方法。

但是在滚动过程中,延迟加载会按预期工作。该问题仅在页面加载时发生。

但是,如果在tsconfig.app.json中禁用了Ivy,则延迟加载的工作方式与更新到Angular 9之前相同。

"angularCompilerOptions": {
  "enableIvy": false
}

所以问题似乎与常春藤有关。常春藤有变化可以解释这个问题吗?对于常春藤,更改检测似乎有所不同,因为没有常春藤,图像元素的位置已在 ngAfterContentInit 中完成(位置与可见位置匹配),而< strong> with Ivy 元素的位置与其最终位置不同。

任何解决或解决此问题的建议,将不胜感激。

0 个答案:

没有答案