【问题标题】:Angular2 router: How to share a value from parent to child routes?Angular2路由器:如何从父路由共享值到子路由?
【发布时间】:2017-03-28 07:20:02
【问题描述】:

在一个 Angular2 应用程序(使用最终的 1.x 版本)中,我有一个包含多个选项卡的页面。父状态/samples/{id} 对每个选项卡都有一个子路由。例如。 /samples/{id}/location 或 /samples/{id}/execution。

示例数据是一个大对象,由服务器 API 在一次请求中发送,包含所有选项卡的数据。所以我只想加载一次,当父路由被激活时(在组件代码中或者可能在解析中),然后在我的所有选项卡中读取它。

有没有办法直接从父组件共享对象到子路由的组件?有点像 Angular 1 中继承的范围?

我知道我可以使用服务来共享对象,我只是好奇是否有内置的解决方案。

我也知道可以从父路由获取路由参数,但在这种情况下它不会很有用。

【问题讨论】:

    标签: javascript angular typescript single-page-application angular2-routing


    【解决方案1】:

    “内置解决方案”实际上是使用共享服务。

    还有使用 @Input() 装饰器的选项,但在你的情况下它不适用,因为据我所知你正在使用路由。这仅适用于父子关系,子在父组件内。

    另一种选择是使用Route Data Resolver,它会在激活路线之前解析数据,但由于数据已经加载,因此共享服务选项是您的最佳解决方案。

    【讨论】:

    • 谢谢!最后,我在父路由中使用了解析器来加载数据一次。数据保存在服务内部的一个简单缓存中。然后我可以在每个子路由组件中同步访问已经加载的数据。
    猜你喜欢
    • 2016-12-08
    • 2017-09-18
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2022-07-24
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多