使用服务在角度组件之间进行通信是否正确?

时间:2018-05-30 05:13:29

标签: angular angular-services

使用服务在角度组件之间进行通信是否正确? 如果我有一个打开模态的组件

this.taskService.activeTask = this.currentTask;
this.tagSelectModalRef = this.modalService.show(TagSelectorComponent, {});

"传递"是否正确模态必须通过服务处理的元素,如示例中所示?

如果组件可以并排显示其中一个组件中的点击影响另一个组件的组件,那么它也是正确的吗?

谢谢,
安瑞科

3 个答案:

答案 0 :(得分:3)

是的,您可以使用服务在组件之间进行通信。它在component interaction section中的官方角度文件中清楚地记录了。

答案 1 :(得分:2)

通过创建2个独立的组件,我亲自完成了您过去尝试做的事情。我发现这是一个更清晰的实现,假设你在该服务中所做的就是共享数据。但从技术上讲,如果您想要使用该服务,那么使用服务并没有错。如果您对那些独立于模态和组件的数据进行操作,并且希望单独运行它们并独立于组件或模态,那么我将更倾向于使用服务。

使用2个组件的概念如下所述:

因此,您将拥有已有的组件,但将模态转换为第二个组件。

然后,可以使用@Input@ViewChild@Output完成两个组件之间需要共享的任何内容。基本上,您需要从顶级组件传递的任何内容,您将在模态组件中使用@Input。您需要通知模式的顶级组件,具体取决于您尝试传递回树的内容或您想要触发的行为,可以使用@Output和{{ 1}}来自模态组件中的EventEmitter导入,或者您可以在顶级组件中使用@angular/core

答案 2 :(得分:0)

您需要使用服务在兄弟组件之间进行通信。如果您需要与父母使用@input和@output

的子女或子女进行父母沟通