angular - Angular2 varför getters om man kan definiera offentliga egenskaper


Varför duplicera kod för att definiera getters när vi kan komma åt egenskaper direkt från mallen?

Svar #1

Du behöver inte använda getters. De är bara användbara om du behöver köra någon logik varje gång egenskapen nås.

Exempel: Värdet på din egendom härleds från värdet av andra egendomar i din kod (och dessa andra värden ändras över tid). Du kan inte lagra värdet i egendomen en gång för alla, eftersom det måste beräknas om varje gång de andra värdena ändras. (Tänk på totalbeloppet i en shoppingvagnskomponent, som erhålls genom att lägga till priset på varje produkt multiplicerat med antalet enheter.)

I huvudsak är en getter-egenskap analogt med att kalla på en funktion. Men i en mall föredrar vissa att skriva {{ myValue }} istället för {{ getMyValue() }}.

En annan användning av accessorer i Angular är att implementera en setter för att reagera på värdeförändringar för en egenskap. Dokumentationen har ett exempel på en komponent vars @Input förändras och komponenten behöver reagera på det. Se https://angular.io/docs/ts/latest/cookbook/component-communication.html#parent-to-child-setter.