【问题标题】:Angular2 Routing, heavy page, simulate navigationAngular2 路由,重页,模拟导航
【发布时间】:2023-03-06 18:37:01
【问题描述】:

我需要一些关于路由的帮助。只要我在不同的路线之间移动,大部分都可以正常工作,包括浏览器中的后退和前进按钮。但是我有一个重量级组件(youtube 播放器)(路由),我只想更改 /route/:id 上的内容并避免重新初始化组件。所以我使用Location.go(:id) 来修复网址。

但现在浏览器中的后退和前进按钮无法正常工作。我想我可以使用Location.subscribe 来挂钩浏览器事件、更改内容或导航并继续前进。但是.. 后退和前进按钮不起作用。如果我返回(到location.go())网址,则没有转发。我不能回去两次。

我希望有人可以在这里给我一个策略……我在兜圈子。 似乎Location.go(:id) 只是没有处理业务。

【问题讨论】:

    标签: angular angular2-routing


    【解决方案1】:

    只需在您的重量级组件上实现CanReuse 并返回true,然后组件实例将被保留并在您路由返回时重新添加。

    【讨论】:

    • 知道了。谢谢。虽然,当我在同一条路线上使用不同的 ID 时,后退和前进按钮工作不完全正确。将深入研究。
    • 你不应该使用Location.go()。改用this.router.navigate...()(要求您将Router 注入到您的组件/服务中(尽管不要将ROUTER_PROVIDERS` 添加到组件中-仅bootstrap(...)
    • 导航到不同的路由(只有一个参数不同可能会阻止canReuse 生效(我自己没有玩太多)。路由器不被认为是功能完整的无论如何。关于如何改进和如何进行的讨论很多。
    • 是的,我确实发现 Location.go() 是一个死胡同。正如您的建议,我确实去了this.router.navigate(..),正如我所说,它几乎就在那里,但我认为角度实现还没有全部完成。在同一路线上重复使用时,后退/前进键并不完全正确,但在不同组件之间导航时后退/前进是完美的。感谢您的链接。 ;)
    猜你喜欢
    • 2018-06-08
    • 2016-11-14
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2017-02-26
    相关资源
    最近更新 更多