首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >灯箱组件与其子组件之间的通信?

灯箱组件与其子组件之间的通信?
EN

Stack Overflow用户
提问于 2017-09-02 14:50:06
回答 2查看 1.2K关注 0票数 1

我有以下标记来显示灯箱中的任何组件:

代码语言:javascript
运行
复制
<lightbox>
  <some-comp></some-comp>
</lightbox>

我正在努力为这两个组件寻找更通用和更灵活的通信方式(我已经读过https://angular.io/guide/component-interaction)。例如,子组件可能会对lightbox说:

  • 我的内容很大,所以你需要扩展。
  • 我包含一个表单,这是通过表单提交的数据。
  • 等。

很重要。这个灯箱事先不知道它将持有哪种类型的组件。

我可以通过在两个组件中注入一个服务来使其工作,并且服务包含一个Subject,作为两个组件之间的通信总线(这个解决方案被描述为在医生里)。

但还有别的办法吗?我正在开发一个UI组件库,服务解决方案迫使库的用户在他们在lightbox中显示的每个组件中注入和操作一个服务。我想避免那样做。

(我的另一个想法是让lightbox能够访问它的子组件并订阅该组件上的特定属性,但很难以通用的方式完成。)

EN

回答 2

Stack Overflow用户

发布于 2017-09-02 15:02:19

显式地将子传递给父母

一种方法是显式地传递孩子。

代码语言:javascript
运行
复制
  <parent [child]="child">
    <child #child></child>
  </parent>

柱塞实例

为父级提供服务。

另一种方法是在父组件上提供服务,并将其注入子组件中。

柱塞实例

最好使用可观测值(BehaviorSubject,.)用于通信,而不是柱塞中使用的简单字段方法。

结论

在各个方面,都需要一些合作,要么来自使用父组件的开发人员,要么来自构建受支持的子组件的开发人员。

票数 1
EN

Stack Overflow用户

发布于 2017-09-02 16:00:31

说到冈特的回答,你也可以看看NGRX

这是大型组件之间进行通信的最佳方式之一,这两个组件的作用都类似于Dumb Components i:e将不知道每个组件所包含的数据类型。

将数据保持在中心位置也将有助于您很好地管理应用程序的状态,这将带来更好的灵活性和添加未来增强的能力。

我有一个专门介绍ngrx(v4)的完整页面,希望它能帮助链接

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46014977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档