如果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-无法给元素的属性做双向绑定,除非这个属性是指令或者组件
为啥 colspan 在 Angular 2 中不是一个已知的原生属性?