当我们可以直接从模板访问属性时,为什么要复制代码来定义 getter?
最佳答案
您不必使用 setter/getter 。它们仅在每次访问属性时都需要执行一些逻辑时才有用。
示例:您的属性值源自代码中其他属性的值(这些其他值会随时间变化)。您不能一劳永逸地将值存储在属性中,因为每次其他值更改时都必须重新计算它。 (想想购物车组件中的总计,它是通过将每个产品的价格乘以单位数量获得的。)
本质上,getter 属性类似于调用函数。但是在模板中,有些人更喜欢编写 {{ myValue }}
而不是 {{ getMyValue() }}
。
在 Angular 中访问器的另一个用途是实现一个 setter 来响应属性值的变化。该文档有一个组件的示例,其@Input 更改并且该组件需要对此使用react。参见 https://angular.io/docs/ts/latest/cookbook/component-communication.html#parent-to-child-setter .
关于Angular2 为什么 getters 如果我们可以定义公共(public)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41749149/