我使用 @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视图组件似乎不受影响
我目前正在开发一个干净的示例应用程序来重现这个问题,并为进一步的测试提供更多上下文。我很快就会添加它。
库版本
Angular: 6.1.0
AngularJS: 1.7.2
zone.js: 0.8.26
@uirouter/angular-hybrid: 6.0.0
更新(2019年8月)
当前库版本为Angular 8、AngularJS 1.7.8和uirouter/hybrid 8,仍然存在该问题。