Angular2路由器:如何从父路由到子路由共享一个值?

时间:2016-11-14 15:34:27

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

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

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

有没有办法直接将父组件中的对象共享到子路径的组件?类似于范围是在Angular 1中继承的吗?

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

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

1 个答案:

答案 0 :(得分:3)

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

还可以选择使用@Input()装饰器,但在您的情况下它不适用,因为您可以使用路径。这仅适用于父子关系,其中子在父组件内。

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