我一直在學習過去2個月的Angular 2,並且在使用這些服務時我有點困惑。如果我正在開發一個包含多個組件的應用程序,並且每個應用程序都有一組要通過Web服務顯示的數據,我可以使用單個服務來顯示數據(如果它們是在相同模型上構建的),還是應該通過以下方式創建一個服務:零件?Angular 2服務:正確的使用案例
由於事先見識一下這個問題
我一直在學習過去2個月的Angular 2,並且在使用這些服務時我有點困惑。如果我正在開發一個包含多個組件的應用程序,並且每個應用程序都有一組要通過Web服務顯示的數據,我可以使用單個服務來顯示數據(如果它們是在相同模型上構建的),還是應該通過以下方式創建一個服務:零件?Angular 2服務:正確的使用案例
由於事先見識一下這個問題
您可以在許多組件中使用服務,而無需爲每個組件創建唯一的服務。
而不是複製的又一遍地粘貼相同的代碼,你會 創建一個可重複使用的數據服務,並將其注入到需要它的 組件。
此外,服務是單例,組件中的所有實例都是相同的(它基於分層注入器)。
'服務是一個單身'是不完全正確。取決於您使用的是有狀態服務還是無狀態服務。看到我的答案。否則,我同意你的回答,因爲關於不重複自己的部分是這個線程的有效補充。 – JGFMK
服務類(提供者)與@Injectable裝飾,可以是:在這裏你在定義它們在App-module.ts
如果你的服務包含狀態,那麼單身將有可能引起副作用,這就是當你把他們內部@Component
該文檔是誤導這裏..向下滾動到元數據屬性:看到「供應商: '
您可以通過始終返回Observables來實現無狀態服務。
即訂閱HTML模板後面的組件Typescript中的調用服務。
是的,只要是可注射的,您可以爲所有組件使用一項服務。 – Brandon
你有任何關於這個話題的例子,因爲我昨天發佈了一個問題,似乎沒有人知道它是如何工作的 – Geeksan
你是否已經在angular.io上通過了「英雄之旅」?它提供了一個如何使用組件中單個服務的數據的例子。您可以展開那裏展示的概念來做任何事情。 – Brandon