如何在Angular 2中的2个组件之间共享数据
我的用例是当我登录时,根据用户名和密码输入用户名和密码,我决定用户的角色,并在服务的setter方法中设置该角色。
现在我想在下一个组件中获取我在此组件中设置的角色。当我尝试使用getter方法获取它给我null的角色时,我认为这是因为在我的第二个组件中,我得到的服务实例是新实例。
我怎样才能实现这样的目标,我可以在一些常见对象中设置一些数据,并且可以从不同组件中的该对象中检索。
请注意,我不想将数据从一个组件传递到另一个组件。
答案 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演练!祝你好运!