让两个控制器通过服务相互通信的正确方法(Angular2)

时间:2017-03-22 15:16:09

标签: angular typescript

我有两个控制器:

  • “摘要”控制器,提供概述,但也包括用户上传的文件列表。
  • “详细信息”控制器,提供与特定项目相关的信息。

在详细信息视图中,用户具有(新创建的)功能,可以重置他们所做的更改。要重置的部分更改是删除所有已上载的文件。因此,我需要细节控制器告诉摘要控制器删除它拥有的文件。

我知道我需要使用该服务来协调交换,但我不确定如何在Angular2中执行此操作。因此我想象的工作流程是:

  1. 用户点击详情视图上的按钮以重置页面。
  2. 详细信息控制器通知服务摘要控制器应删除其上传的文件。
  3. 服务通知摘要控制器删除文件。
  4. 摘要控制器接收通知并按要求删除文件。
  5. 我一直在深入研究如何在Angular中实现这一点,所以我对使用EventEmitter()(不鼓励使用它)和使用Observables有些熟悉。然而,我所看到的所有例子似乎都没有按照我试图使用它的方式使用该模式。

    我的问题:完成任务的正确“角度”方式是什么?

1 个答案:

答案 0 :(得分:1)

  

我一直在深入研究如何在Angular中实现这一点,所以我对使用EventEmitter()(不鼓励使用它)有点熟悉,

这些模式存在是有原因的。我只会使用事件发射器(尽管在类型安全的包装器中)https://gist.github.com/basarat/46936dec14ad985bee24f54f3977cb2d

  

(不鼓励使用)

理想情况下,服务拥有您没有controller1 -> service -> controller2数据流且只有controller1/2 -> service(突变请求)service -> controller1/2的数据(读取数据) )等。