如何使用downgradeModule()

时间:2018-03-21 04:19:36

标签: angular angular-ui-router

我正在使用" ui-router"混合(https://github.com/ui-router/angular-hybrid)引导"经典"办法。

我们正在遇到性能问题" hover"以及数据网格中可见的其他事件。 我们认为这是由于此处描述的两个版本之间的变化检测重叠/倍增。

https://pr18487-aedf0aa.ngbuilds.io/guide/upgrade-performance

我正在尝试使用上面文档中描述的downgradeModule()bootstraping方法来解决性能问题,但一直无法解决。

不能使用Angular模块引导程序,但没有错误。 我就是这样做的。 “联系人”按钮(Angular模块)不执行任何操作。

https://stackblitz.com/edit/github-ypge8f-jmshp3

我还尝试直接引导"联系人" Angular模块,(" App"一个懒惰加载" Contacts"并认为这可能是个问题),但结果是一样的。 此问题也已发布here

1 个答案:

答案 0 :(得分:6)

经过长时间的斗争,我想我终于明白了。由于所有使用downgradeModule的Angular混合示例都使用内置路由器,因此ui-router使得处理这个问题变得更加困难。 更新了代码以使其工作:  https://stackblitz.com/edit/github-ypge8f-jmshp3 技巧是:

  • Angular bootstrap模块需要一个" UIRouter"类型的参数。在 构造函数,否则它不会引导其状态:

export class AppModule { constructor(private router: UIRouter) { // "router" needed in constructor to bootstrap angular states }

  • urlService必须在bootstrap之前停止并在之后重新启动, 比如常规混合示例

  • 重新启动urlService 发生在" setTimeout"打电话(找不到更好的挂钩方式 这个动作)允许Angular状态在重新加载时引导 带有来自其中一个州的网址的页面。

setTimeout(() => { // setTimeout needed to allow angular routes to initialize after refresh urlService.listen(); urlService.sync(); });