angular - Angular2 如果我们可以定义公共属性,为什么还要使用 getter
为什么要重复编写代码来定义 getters,而我们可以直接从模板访问属性?
答案#1
你不必使用 getter。只有在每次访问属性时需要执行某些逻辑时,它们才有用。
示例:你的属性的值来源于代码中其他属性的值(而且这些其他值会随时间变化)。你不能一次性将值存储在该属性中,因为每当其他值发生变化时,都必须重新计算它。(想象一个购物车组件中的总计,它是通过将每个产品的价格乘以数量再相加得到的。)
本质上,getter 属性类似于调用函数。但在模板中,有些人更喜欢写 {{ myValue }} 而不是 {{ getMyValue() }}。
在 Angular 中,访问器的另一个使用是实现一个 setter,以便对属性的值变化做出反应。文档中有一个示例,一个组件的 @Input 发生变化,并且组件需要对此作出反应。请参见 https://angular.io/docs/ts/latest/cookbook/component-communication.html#parent-to-child-setter。