2017-03-22 68 views
1

我有兩個控制器:正確的辦法有兩個控制器通過服務相互交談(Angular2)

  • 了「摘要」控制器,它提供了一個概覽,也包括文件的列表,用戶已經上傳。
  • 提供與特定項目有關的信息的「詳細」控制器。

在Detail視圖中,用戶具有能夠重置他們所做更改的(新創建的)功能。部分要重置的更改是刪除所有上傳的文件。因此,我需要詳細控制器告訴彙總控制器刪除它所具有的文件。

我知道我需要使用該服務來協調交換,但我不知道如何在Angular2中執行此操作。我想象的工作流程如下:

  1. 用戶單擊詳細視圖上的按鈕以重置頁面。
  2. 詳細信息控制器通知服務,彙總控制器應刪除其上傳的文件。
  3. 服務通知摘要控制器刪除文件。
  4. 摘要控制器根據請求接收通知並刪除文件。

我一直在深入研究如何在Angular中實現這一點,所以我對使用EventEmitter()(以及使用Observable)有所瞭解。然而,我所見過的所有例子似乎都沒有像我試圖使用它的方式使用該模式。

我的問題:什麼是正確的「角度」方式來完成我的任務?

回答

1

我已經挖掘到了如何在角做到這一點,所以我有點熟悉使用EventEmitter()(使用其中不鼓勵),

這些模式的存在一個原因。我只想用一個事件發射器(雖然在一個類型安全的封裝)https://gist.github.com/basarat/46936dec14ad985bee24f54f3977cb2d

(它的使用是不鼓勵)

理想情況下,服務擁有數據,你這樣就不必controller1 -> service -> controller2數據流,只是controller1/2 -> service(突變請求)service -> controller1/2(讀取數據)等

+0

這是我最終做的。我必須在兩個控制器,父母和孩子之間進行交叉溝通。我使用$ emit來一種方式,而$使用另一種方式播放。它工作正常,但我覺得它有一個稍微難聞的氣味。我希望有更好的方式,但不是這樣的作品。謝謝! – Fletchius