2017-08-10 69 views
3

假設我們得到了深度嵌套架構,其中包含一個主要組件和3個子組件。例如:角度事件發射器與通過服務的通信

todo->todo list->todo list action bar->todo list button 

還會有其他組件。

當我們使用EventEmitter時,我們不得不將所有圖層放到todo組件上。 另一種方法是通過一個可觀察的通信服務從按鈕組件與待辦事項組件進行通信。

什麼是使用這種方式或其他方式的起伏?我該怎麼辦?

回答

2

這是一個設計視角。

一般來說,我發現如果應用程序的大小是中等到巨大的,那麼去共享服務使用Behaviour SubjectReplay Subject將消息傳輸到其他組件。

甚至更​​好的設計是去ngrx i:e在Angular中使用redux。 這個唯一的缺點是需要爲動作和縮減器編寫額外的代碼,但優點是所有邏輯都與在redux世界中被稱爲啞組件的組件分開。一旦完成,它將成爲一個使用ngrx dev tools在任何時候跟蹤狀態的救生員,並且您將很容易追蹤何時以及如何調試以及如何添加代碼來觸發哪個事件或動作。

只有當您的應用程序大小很小時,我會建議您與事件發射器一起使用,因爲多個嵌套組件會被吞噬在意大利細麪條代碼中。你不能跟蹤所有的射擊事件,然後你最終重新寫你的代碼。

有關使用事件發射器vs共享服務的更多信息LINK。有一個特別的問題就是爲此。

更多關於ngrx LINK。此鏈接使用ngrx v2。

我一直在使用NGRX第4節的一個小應用程序工作,以下是相同git git的回購和工作example