跨组件共享数据

时间:2017-07-10 17:51:11

标签: angular

我正在开发一个Angular4应用程序,我的主要问题是我在应用程序中有不同的组件,例如

<app-layout>
 <app-component-1></app-component-1>
 <app-component-2></app-component-2>
</app-layout>

现在我的问题是下一个问题,如果我点击组件-1中的某个元素,应该通知app-layout和组件2,当我点击组件2时,app-layout和component-1应该也被通知。

想象一下打开侧边栏并选择类别和子类别的方案。

3 个答案:

答案 0 :(得分:3)

您有以下几种选择:

1)您可以使用@Input和@Output属性在父(app-layout)和子(component-1和component-2)之间进行通信。使用这种技术,孩子们每个人都必须与父母沟通,然后父母将任何信息传递给其他孩子。

我在这里有一个例子:https://blogs.msmvps.com/deborahk/passing-data-to-and-raising-an-event-from-a-nested-component/

2)您可以使用服务。 Angular中的服务是单例,这意味着它作为单个实例进行管理。因此,如果每个组件都访问该服务,他们将访问相同的共享数据。

我有一个使用服务进行沟通的示例:https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/

答案 1 :(得分:1)

这个问题已被多次询问过。 你需要阅读角度教程: https://angular.io/guide/component-interaction

答案 2 :(得分:0)

您正在寻找的是service + rxjs。

这是一篇非常好的文章,如何做到这一点。

http://jasonwatmore.com/post/2016/12/01/angular-2-communicating-between-components-with-observable-subject