2017-07-18 35 views
0

我一直在學習過去2個月的Angular 2,並且在使用這些服務時我有點困惑。如果我正在開發一個包含多個組件的應用程序,並且每個應用程序都有一組要通過Web服務顯示的數據,我可以使用單個服務來顯示數據(如果它們是在相同模型上構建的),還是應該通過以下方式創建一個服務:零件?Angular 2服務:正確的使用案例

由於事先見識一下這個問題

+2

是的,只要是可注射的,您可以爲所有組件使用一項服務。 – Brandon

+0

你有任何關於這個話題的例子,因爲我昨天發佈了一個問題,似乎沒有人知道它是如何工作的 – Geeksan

+0

你是否已經在angular.io上通過了「英雄之旅」?它提供了一個如何使用組件中單個服務的數據的例子。您可以展開那裏展示的概念來做任何事情。 – Brandon

回答

1

您可以在許多組件中使用服務,而無需爲每個組件創建唯一的服務。

angular2 reference

而不是複製的又一遍地粘貼相同的代碼,你會 創建一個可重複使用的數據服務,並將其注入到需要它的 組件。

此外,服務是單例,組件中的所有實例都是相同的(它基於分層注入器)。

+0

'服務是一個單身'是不完全正確。取決於您使用的是有狀態服務還是無狀態服務。看到我的答案。否則,我同意你的回答,因爲關於不重複自己的部分是這個線程的有效補充。 – JGFMK

2

服務類(提供者)與@Injectable裝飾,可以是:在這裏你在定義它們在App-module.ts

  • 單身提供程序中的@ngModule:[] array
  • 注入@Component裝飾器中,用於單個服務不會執行的用例。

如果你的服務包含狀態,那麼單身將有可能引起副作用,這就是當你把他們內部@Component

該文檔是誤導這裏..向下滾動到元數據屬性:看到「供應商: '

您可以通過始終返回Observables來實現無狀態服務。

即訂閱HTML模板後面的組件Typescript中的調用服務。

  • 組件類都有
  • HTML模板使用與aysnc pipe結合觀察到的類屬性可觀察到的特性。 | async