角度 2 - 当我让路由器导航时,解析器在当前页面上的 OnDestroy 之前做出反应

Posted

技术标签:

【中文标题】角度 2 - 当我让路由器导航时,解析器在当前页面上的 OnDestroy 之前做出反应【英文标题】:angular 2 - When i make a router navigate, the resolver react before the OnDestroy on the current page 【发布时间】:2018-05-04 17:20:34 【问题描述】:

我有两条路线:

path: 'route1',component: component1,resolve: parameters: resolver1
path: 'route2',component: component2,resolve: parameters: resolver2

我从 route1 导航到 route2 , route2 的解析器在 Ondestroy route1 之前做出反应,合乎逻辑吗?

我的问题是,如果我在 resolver2 上调用一个服务,该服务更新一个与 page1 上的 observable 绑定的 object1,那么这个 page1 上的所有 observable 的 object1 都会做出反应。

我觉得这很奇怪,因为我们离开了页面。此外,如果 Observable 中存在服务请求,它们也会做出反应,因此我们的请求服务过多。

【问题讨论】:

【参考方案1】:

是的,这完全合乎逻辑。什么是解析器?这是一段确保在路由初始化和组件加载之前加载一些初始数据的代码,因此,例如,如果数据加载,用户不会看到空白页面失败并保留在上一页。你可以这样想:当你开始导航时,如果有任何解析器,它们就会运行,并且当(且仅当)数据成功加载时,之前的组件将被销毁(因此调用ngOnDestroy)和替换为新的,所以是的,这不仅完全合乎逻辑,而且实际上是实现这种行为的唯一正确方法。 您可以阅读有关解析器的更多信息here

【讨论】:

好的,我理解这种行为,感谢您的解释。我将尝试找到另一种方法在当前页面上只调用一次我的 observables,您对此有什么想法吗? 如果您对您的实际代码提供一些见解,我可能会提供帮助

以上是关于角度 2 - 当我让路由器导航时,解析器在当前页面上的 OnDestroy 之前做出反应的主要内容,如果未能解决你的问题,请参考以下文章

角度路由器导航问题

当我导航到其他路由器页面时,如何清除由错误边界创建的自定义消息

角度路由器导航然后重新加载

锚点href vs 角度路由器链接

如何以角度2刷新页面

内部资源视图解析器在 Spring Boot 中不起作用