我有一个 Angular/AngularJS 升级应用程序,目前正在将所有内容从 AngularJS 迁移到 Angular。这是一个相当大的项目,所以我绝对需要采用升级方式。
我使用@uirouter/angular-hybrid 并且有一个仍然是AngularJS(导航和东西)的根状态和一个子视图。在这个子视图中,我现在正在慢慢地将所有组件升级到 Angular。出于性能原因,我不得不使用 downgradeModule() ( https://angular.io/guide/upgrade-performance ) 而不是 UpgradeModule。
对于 UI 组件,我使用 Angular Material 2。
设置这么多,现在到问题/问题:
当带有页面的选项卡在后台并且您稍后(至少 5 到 10 分钟)返回该页面时,整个页面会滞后并且无响应。你离开的时间越长,标签在后台的时间越长,滞后的时间就越长。
我已经尝试/发现的:
- 似乎注册了事件,但由于选项卡在后台,因此它们不会执行,而是在您返回选项卡后同时执行。这是分析的屏幕截图
- 删除 Angular 变化检测和使用
ngZone: 'noop'
没有效果 - 禁用所有动画无效
- 启用 Angular 生产模式稍微改善了一点(也可能是一种错觉),但问题仍然存在
- 我在 Chrome 中开发,其他浏览器(例如 Firefox、Safari)也存在问题
- 仅当路由器视图组件是 Angular 组件时才会发生,AngularJS 视图组件似乎不受影响
我目前正在开发一个干净的示例应用程序来重现该问题并提供更多上下文以进行进一步测试。我会尽快添加它。
库版本
角度:6.1.0
AngularJS:1.7.2
zone.js:0.8.26
@uirouter/角混合:6.0.0
更新(2019 年 8 月)
当前的 Lib 版本 Angular 8、AngularJS 1.7.8 和 uirouter/hybrid 8 仍在发生