2017-09-15 89 views
0

我有2個不同類型的組件。它們都僅使用和含有HTML5帆布元件,但需要一個圖表上示出不同類型的數據:後臺應用程序邏輯的最佳解決方案?

  1. 組分A(只有以往的這些1)
  2. 組分B(0至這些4 )

兩個組件都需要兩個數據集中第一個數據項的dateTime,但最後一個項的dateTime來自它們各自的數據集。

A組分需要從成分B

目前,我不喜歡這樣的第一個條目日期:

成分B是發現從自己的數據集的日期限制的方法。使用觀察者模式&受試者,我通過服務廣播返回的日期,並將其傳送到組件A中。

雖然這個問題存在,但耦合突然變得非常緊密。我無法首先初始化組件A,因爲它需要B先進行計算。理想情況下,這兩個組件應該同時初始化並顯示/共享他們的數據,並繼續這樣做。 (例如,如果用戶在滾動一個圖表,應該滾動所有其他部件也一樣,等等。)

這就是爲什麼我想在這些組件的基礎上增加了一個額外層。一個控制器,如果你願意。

我無法弄清楚什麼是最好不過:


  • 共享服務,可以採取外部數據作爲輸入?
  • 一種容器組件? (包含)
  • 另一種組分,組分C,即甲&乙是兒童?

  • 當我還是新角2,這是很難說哪種方法最適合未來的維護/發展?


我被吸向創建另一個正常組分作爲母體,並具有該組件的發送和從它的兒童接收數據到/根據需要(A & B)。

我也是不確定的,什麼是「最佳實踐」,如果你可以只使用一個組件像一個空「邏輯殼」。我試過在這裏和那裏閱讀,我發現很多,但我似乎無法得到我的問題的確切答案。在我能夠理解所有這些知識並自己回答之前需要時間,所以我希望有人能給我一個幫助,謝謝。

PS:我要補充一點,我的角應用將在更大的應用程序中的兒童組成部分,將由其他一些父母補償獲得其數據。

回答

0

你爲什麼不把自己的邏輯加入服務? 您還可以通過將子服務注入到父服務中來設置服務層次結構。

如果你的邏輯不是UI /交互相關的,你應該把它放到可重用的服務中。如果您的邏輯與用戶界面相關,則可以在A和B之間設置一個父組件作爲中介(根據各自的輸入/輸出參數進行操作)。

無論您做什麼,最好讓關注點分開。

  • A和B都不需要關心其他需要輸出的組件。 Angular具有輸入/輸出參數。

  • 不要把一些通用的日期時間計算的東西放入組件。通過服務使其可重用。

  • 通過引入界面和進樣保持聯接鬆動。

更新:

服務,才應使用注射構造函數的參數,所以你應該通過使用方法您的輸入(或制定者,但畢竟是少的表現)。 要傳遞任意的JSON對象,您可以使用任何參數。但是,如果你的json遵循一定的結構,你可以定義一個接口。

public doStuff(input: any): any { } 

interface IMyDataContract { 
    dateField: string; 
} 

public doStuff(input: IMyDataContract): any { } 
+0

我的邏輯涉及操縱/搜索一個JSON數據集,以吸取HTML5畫布元件中的數據。我應該能夠使用服務,但是我無法將JSON數據作爲輸入傳遞給服務。 非常感謝您的回答,我將再次嘗試服務解決方案。 – PDAWG

+0

只需定義一個方法和參數。你的服務應該只包含注射構造參數 – mbnx

+0

我更新了答案。 – mbnx

相關問題