在Angular 2中共享2个组件之间的数据

时间:2016-08-26 17:00:09

标签: angular

如何在Angular 2中的2个组件之间共享数据

我的用例是当我登录时,根据用户名和密码输入用户名和密码,我决定用户的角色,并在服务的setter方法中设置该角色。

现在我想在下一个组件中获取我在此组件中设置的角色。当我尝试使用getter方法获取它给我null的角色时,我认为这是因为在我的第二个组件中,我得到的服务实例是新实例。

我怎样才能实现这样的目标,我可以在一些常见对象中设置一些数据,并且可以从不同组件中的该对象中检索。

请注意,我不想将数据从一个组件传递到另一个组件。

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,您应该将服务添加到模块级提供程序列表中。然后,您不必每次都新建服务实例。只需将它添加到构造函数中,而不是添加到组件的提供者列表中(由于模块级别声明,应用程序将知道它是提供者)。然后,您在任何组件中设置的数据将在所有组件之间共享。

答案 1 :(得分:0)

我为此问题http://plnkr.co/edit/acI06AJWCGlgDtDYw5Ut?p=preview创建了一个plunker。正如Dave所提到的,当您在模块级别的服务中设置一些值时,它将可用于子组件。在我的示例中,我已经在我的登录组件中为服务设置了一些属性,之后路由到主组件仍然可用。你可以注意到我能够在console.log中记录“loggedInUser”变量的值。

 console.log("In Home component loggedInUser : " +  this._SessionService.LoggedInUser);

答案 2 :(得分:0)

您应该将组件交互与@Input和@Output一起使用。下面是一篇关于如何实现此功能的Angular演练!祝你好运!

Component Interactions