我是新來的打字稿,角度2和一個問題,我無法讓我的思想圍繞是。我認爲服務是一個文件或文件,這些文件或文件具有對許多組件都有用和常用的功能。所以最終使這些功能成爲中心,並因此在所有這些組件中使用。角度服務注入和導入對象之間的差異
所以我的問題是什麼是這些服務,他們必須注入時,我可以創建一個功能的對象文字,只是在組件中導入它們。我仍然可以使用我導入的對象調用這些功能。
我是新來的打字稿,角度2和一個問題,我無法讓我的思想圍繞是。我認爲服務是一個文件或文件,這些文件或文件具有對許多組件都有用和常用的功能。所以最終使這些功能成爲中心,並因此在所有這些組件中使用。角度服務注入和導入對象之間的差異
所以我的問題是什麼是這些服務,他們必須注入時,我可以創建一個功能的對象文字,只是在組件中導入它們。我仍然可以使用我導入的對象調用這些功能。
放棄一個類的類型,只是使用它是完全有效的。然而,在角依賴注入機制,讓你實現同樣的事情,但也有一些額外的好處:
要重申評論所說的話,服務的單個實例旨在跨多個組件/類使用。這是依賴注入完成的。例如,如果在多個組件使用的服務中有待完成的項目數組,則此列表在所有組件中都是相同的,因此如果一個組件添加到列表中,則所有其他組件都會看到此更改反映出來。
另一方面,導入對象文本會爲每個組件使用不同的實例。因此,在同一示例中,如果服務對象包含待辦事項項目的數組,則每個導入此對象的組件都將具有單獨的待辦事項列表,這些項目之間不會有任何關聯。
希望能夠澄清問題。
我不同意你在第一段中的陳述。這取決於你如何注入服務。你描述了共享服務的情況,這是同一個實例。但是你可以在許多情況下注入數組,以便共享數組 – Vega
它與應用程序組合有關,使用模塊vs使用類+ DI令牌,但都提供了平分共享狀態的能力。 –
服務是單身,對象不是。如果某個組件更改了某個服務的某個屬性的值,則其他組件可以看到該值發生了更改,而如果某個組件更改了該對象的某個屬性的值,則只能看到該更改。 – Claies
注入器允許重新實例化,替換或修改服務實例,而不更改定義或使用它們的文件,包括測試。這是不可能的進口,至少沒有黑客。這是任何DI容器的特點,並不是Angular特有的。 – estus
謝謝你們,我想所有的答案都讓事情更加清晰:) – Jdsans