我有以下标记来显示灯箱中的任何组件:
<lightbox>
<some-comp></some-comp>
</lightbox>
我正在努力为这两个组件寻找更通用和更灵活的通信方式(我已经读过https://angular.io/guide/component-interaction)。例如,子组件可能会对lightbox说:
很重要。这个灯箱事先不知道它将持有哪种类型的组件。
我可以通过在两个组件中注入一个服务来使其工作,并且服务包含一个Subject
,作为两个组件之间的通信总线(这个解决方案被描述为在医生里)。
但还有别的办法吗?我正在开发一个UI组件库,服务解决方案迫使库的用户在他们在lightbox中显示的每个组件中注入和操作一个服务。我想避免那样做。
(我的另一个想法是让lightbox能够访问它的子组件并订阅该组件上的特定属性,但很难以通用的方式完成。)
发布于 2017-09-02 15:02:19
发布于 2017-09-02 16:00:31
说到冈特的回答,你也可以看看NGRX。
这是大型组件之间进行通信的最佳方式之一,这两个组件的作用都类似于Dumb Components
i:e将不知道每个组件所包含的数据类型。
将数据保持在中心位置也将有助于您很好地管理应用程序的状态,这将带来更好的灵活性和添加未来增强的能力。
我有一个专门介绍ngrx(v4)的完整页面,希望它能帮助链接
https://stackoverflow.com/questions/46014977
复制相似问题