在Angular2应用程序中(使用最终的1.x版本),我有一个包含多个选项卡的页面。父状态/samples/{id}
具有每个选项卡的子路由。例如。 /samples/{id}/location
或/samples/{id}/execution
。
示例数据是服务器API在一个请求中发送的一个大对象,包含所有选项卡的数据。所以我想只加载一次,当父路由被激活时(在组件代码中或者可能在解析中),然后在我的所有选项卡中读取它。
有没有办法直接将父组件中的对象共享到子路径的组件?类似于范围是在Angular 1中继承的吗?
我知道我可以使用服务来共享对象,我很好奇是否有内置解决方案。
我也知道可以从父路线获取路线参数,但在这种情况下它不会非常有用。
答案 0 :(得分:3)
“内置解决方案”实际上是使用共享服务。
还可以选择使用@Input()
装饰器,但在您的情况下它不适用,因为您可以使用路径。这仅适用于父子关系,其中子在父组件内。
另一种选择是使用Route Data Resolver
在激活路由之前解析数据,但由于数据已经加载,因此共享服务选项是您案例的最佳解决方案。