2017-01-19 50 views

回答

4

您不必使用getter。只有在每次訪問屬性時都需要執行某些邏輯時,它們纔有用。

示例:您的屬性值來源於代碼中其他屬性的值(並且這些值隨時間變化)。您無法一勞永逸地將值存儲在屬性中,因爲每次其他值更改時都必須重新計算該值。 (認爲​​購物車組件中的總計總量是通過將每個產品的價格乘以單位數量而獲得的。)

本質上,getter屬性類似於調用函數。但在模板中,有些人更喜歡寫{{ myValue }}{{ getMyValue() }}

Angular中訪問器的另一個用途是實現一個setter來對屬性的值變化作出反應。該文檔中有一個組件的示例,其@Input發生更改,組件需要對此作出反應。請參閱https://angular.io/docs/ts/latest/cookbook/component-communication.html#parent-to-child-setter

+0

angular也有自己的'get'語法/關鍵字來創建getter,在這種情況下,getter不會有像getMyValue()這樣的名字,而是getter的名字是'public get myValue() {return this._myValue;例如''和該字段可以是'_myValue'。 - 在angular中使用/調用getter並不需要'()'。所以,實際上在模板/視圖中,你無法看到getter和public字段之間的區別。我的觀點:你的'getMyValue()'的例子只是一個充當getter的方法,但它不是一個真正的角度getter。但它是如何編譯的? – bvdb

相關問題