在路由中传递对象[重复]

Posted

技术标签:

【中文标题】在路由中传递对象[重复]【英文标题】:Passing objects in routing [duplicate] 【发布时间】:2016-08-27 22:54:50 【问题描述】:

我在 Angular2 中有一个组件托管用户表 (userTableComponnent) 和 userDetails 的另一个组件。单击用户表中的一行后,我想路由到 userDetails。一种实现是仅传递 userId,因此在 userDetails 中,我使用另一个 http get 获取用户的详细信息。但是,这是多余的,因为我在 userTableComponent 中获取了所有用户信息。所以我真正需要的是将用户对象从 userTableComponent 传递给 userDetails。知道如何通过路由来实现吗?

【问题讨论】:

【参考方案1】:

您可以创建一个 SessionService 类并通过依赖注入将其传递给您的应用程序。

选择用户后,您可以将相关数据附加到通过 DI 注入的 SessionService 实例,并在 userDetails 组件中检索它。

希望对你有帮助

【讨论】:

感谢您的回复。看起来不错 你不觉得共享服务在用户刷新页面时可能会丢失数据吗? 如果刷新意味着使用 F5 键,是的,因为您正在重新加载应用程序,所以一切都会丢失,除非您使用本地存储。考虑到这些是单页应用程序,这意味着它们在加载到浏览器的那一刻就会重新开始。 您可以通过使用使用 APP_INITIALIZER 令牌的数据服务在 F5 刷新后存活,例如我使用此类服务​​为应用程序加载“全局”数据,因此大多数页面都可以在重新加载后继续存在。但是,如果您有一个页面在幕后传递数据,那么您可能会让 F5 “破坏”您的应用程序弹性。除了在 APP_INITIALIZER 中加载数据外,您还可以使用解析器,或者在 URL 中,您可以将 ID 作为查询参数传递,并让给定页面在 onInit 方法中按 ID 加载必要的数据。 ***.com/a/36835156/185123 在这里查看更新【参考方案2】:

通过路由传递对象是非常有限的。使用服务是更好的选择。如果您通过父组件提供服务实例,那么相同的实例会被注入到父组件和子组件中,并且您可以立即获得共享数据。

另见https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service

在 RC.4 中还重新引入了用于路由的 data How do I pass data in Angular 2 components while using Routing?

【讨论】:

谢谢。该链接信息量很大 ***.com/a/36835156/185123 在此处查看更新

以上是关于在路由中传递对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Redux React 中传递对象以更改 [重复]

通过引用传递对象[重复]

在C ++中的继承上下文中按值传递对象[重复]

将对象引用传递给java混淆中的方法[重复]

如何在Angular中的路由之间传递非字符串对象?

如何在 JSON 对象中传递变量 [重复]