如果wen可以定义公共属性,Angular2为啥要使用getter

Posted

技术标签:

【中文标题】如果wen可以定义公共属性,Angular2为啥要使用getter【英文标题】:Angular2 why getters if wen can define public properties如果wen可以定义公共属性,Angular2为什么要使用getter 【发布时间】:2017-06-04 14:04:28 【问题描述】:

当我们可以直接从模板访问属性时,为什么要复制代码来定义 getter?

【问题讨论】:

【参考方案1】:

您不必使用吸气剂。只有在每次访问属性时都需要执行一些逻辑时,它们才有用。

示例:您的属性值派生自代码中其他属性的值(这些其他值会随时间而变化)。您不能一劳永逸地将值存储在属性中,因为每次其他值更改时都必须重新计算它。 (想想购物车组件中的总计,它是通过将每个产品的价格乘以单位数量获得的。)

本质上,getter 属性类似于调用函数。但在模板中,有些人更喜欢写 myValue getMyValue()

Angular 中访问器的另一个用途是实现一个 setter 来响应属性值的变化。该文档有一个组件示例,其 @Input 更改并且组件需要对此做出反应。见https://angular.io/docs/ts/latest/cookbook/component-communication.html#parent-to-child-setter。

【讨论】:

angular 也有自己的 get 语法/关键字来创建 getter,在这种情况下,getter 不会有像 getMyValue() 这样的名称,而是 getter 的名称将是 public get myValue() return this._myValue; 例如,该字段可以是_myValue。 - 在 Angular 中使用/调用 getter 后不需要 ()。所以,实际上在模板/视图中,你看不到 getter 和 public 字段之间的区别。我的观点:您的getMyValue() 示例只是一种充当吸气剂的方法,但它不是真正的角度吸气剂。但是它是如何编译的呢?

以上是关于如果wen可以定义公共属性,Angular2为啥要使用getter的主要内容,如果未能解决你的问题,请参考以下文章

Angular2-无法给元素的属性做双向绑定,除非这个属性是指令或者组件

css公共样式能更高效,为啥不抽公共样式呢?

为啥 colspan 在 Angular 2 中不是一个已知的原生属性?

为啥 Vec::len 是方法而不是公共属性?

Mybatis自动生成的BO对象继承公共父类(BO中过滤掉公共属性)

mybatis为啥要使用dbcp