Angular2 为什么 getters 如果我们可以定义公共(public)属性

标签 angular typescript properties public

当我们可以直接从模板访问属性时,为什么要复制代码来定义 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/

相关文章:

使用 Google Analytics 的 Angular 4+

templates - Angular 2 ng2 如何在模板中使用 TypeScript 枚举?

javascript - 如何调用具有多个参数的 Angular 2 管道?

适用于 Angular-16 的 VS Code 的 Angular 语言服务扩展无法正常工作?

delphi - 重构 Delphi 6 事件处理程序属性的工具/实用程序?

javascript - Cypress 如何在两个元素之间使用 'cy.get'

Angular 5 - Jasimine 测试 - 错误 : Invalid provider for the NgModule 'DynamicTestModule' - only instances of Provider and Type are allowed

typescript - 如何让 WebStorm 中的 TypeScript 解析 webpack 的别名?

java - 将属性文件添加到预先存在的 PropertyPlaceholderConfigurer

java - 如何在 DTO 中隐藏 JsonProperty?