Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 灯箱组件与其子组件之间的通信?_Angular_Angular Components - Fatal编程技术网

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

Angular 灯箱组件与其子组件之间的通信?,angular,angular-components,Angular,Angular Components,我使用以下标记来显示灯箱中的任何组件: <lightbox> <some-comp></some-comp> </lightbox> 我试图找到两个组件之间更通用、角度更高的通信方式(我已经读过)。例如,子组件可能会对lightbox说: <lightbox> <some-comp></some-comp> </lightbox> 我的内容很大,所以你需要扩展 我包含一份表格,这是通

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

<lightbox>
  <some-comp></some-comp>
</lightbox>

我试图找到两个组件之间更通用、角度更高的通信方式(我已经读过)。例如,子组件可能会对lightbox说:

<lightbox>
  <some-comp></some-comp>
</lightbox>
  • 我的内容很大,所以你需要扩展
  • 我包含一份表格,这是通过表格提交的数据
  • 等等
重要。灯箱事先不知道将容纳哪种类型的组件

我可以通过在两个组件中注入一个服务来实现它,该服务包含一个
主题
,作为两个组件之间的通信总线(描述了此解决方案)

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

(我的另一个想法是lightbox可以访问其子组件并订阅该组件上的特定属性,但很难以通用方式实现。)

将子组件显式传递给父组件 一种方法是显式传递子对象

  <parent [child]="child">
    <child #child></child>
  </parent>

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

最好使用可观察(
BehaviorSubject
,…)进行通信,而不是使用Plunker中使用的简单字段方法

结论 在每一方面,都需要一些合作,无论是来自使用父组件的开发人员,还是来自构建受支持的子组件的开发人员。

将子组件显式传递给父组件 一种方法是显式传递子对象

  <parent [child]="child">
    <child #child></child>
  </parent>

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

最好使用可观察(
BehaviorSubject
,…)进行通信,而不是使用Plunker中使用的简单字段方法

结论
在每一方面,都需要一些合作,或者来自使用父组件的开发人员,或者来自构建受支持的子组件的开发人员。

根据Gunter的回答,您还可以查看NGRX

这是大型组件之间通信的最佳方式之一,两个组件的行为类似于
哑组件
i:e不知道每个组件将保存的数据类型

将数据保存在一个中心位置还可以帮助您很好地管理应用程序的状态,这将带来更好的灵活性和添加未来增强功能的能力


我有一整页专门介绍ngrx(v4),希望它有助于推进Gunter的答案,您也可以查看ngrx

这是大型组件之间通信的最佳方式之一,两个组件的行为类似于
哑组件
i:e不知道每个组件将保存的数据类型

将数据保存在一个中心位置还可以帮助您很好地管理应用程序的状态,这将带来更好的灵活性和添加未来增强功能的能力


我有一个专门介绍ngrx(v4)的完整页面,希望对您有所帮助。

@Jota.Toledo:我很清楚这些文档。。。除了我提到的注入服务之外,它没有提供通用的解决方案。我想你可以以某种方式使用ng content+指令,这样你就可以通过该指令“承诺”lightbox内部组件的某些行为,比如:但我没有这方面的经验:(@Jota.Toledo:我很清楚这些文档……除了我提到的注入服务之外,它没有提供通用的解决方案。我想你可以以某种方式使用ng content+指令,这样你就可以“承诺”通过指示lightbox内部组件的一些行为,比如:但我没有这方面的经验:(感谢澄清。我相信这些技术与这里列出的相同:。我希望有一些更“神奇”的东西(从用户的角度)但是你是对的,需要一些明确的合作。这是因为这是关于这个主题的文档;-)我认为第一种方法没有明确提到。我也不确定是否提到了投影的子节点可以从父节点(而不是主机组件)注入服务。我只是想强调这个特定用例的选项。感谢您的澄清。我相信这些技术与这里列出的相同:。我希望有一些更“神奇”的东西(从用户的角度来看),但您是对的,需要一些明确的合作。这是因为这是关于这个主题的文档;-)我认为第一种方法没有明确提到。我也不确定是否提到了一个投影的子节点可以从父节点(而不是主机组件)注入服务。我只是想强调这个特定用例的选项。@Jota.Toledo,但不使用ngrx。我想共享服务和ngrx是不同的。@RahulSingh我跟随了你的链接-这是一个非常聪明的网站,文章中内置了一些有角度的例子。这非常少见,也非常令人印象深刻!!你可以使用ngx来在文章的末尾添加评论也许会很酷,谢谢Ryan考虑过,但我希望所有东西都是角度基准,所以在angular:)@Jota.Toledo中创建了评论部分2,但不使用ngrx。共享服务和ngrx是不同的,我想。@RahulSingh我跟随了你的链接-这是一个非常聪明的网站,像这样的文章中有角度的例子。这是非常罕见的,非常令人印象深刻!!您可以使用ngx disqus向e添加评论