【发布时间】:2018-03-26 18:28:38
【问题描述】:
说,我有一个组件,用途如下:
<health-renderer
[health]="getHealth()"
[label]="label">
<health-renderer>
从https://angular.io/guide/template-syntax 读取数据绑定相关部分后,我设置目标组件属性health 的方式似乎是错误的,因为使用的模板表达式是getHealth(),这是一种方法。方法绑定应该只用事件完成,而不是属性。换句话说,模板表达式(= 右侧的东西)需要是模板变量、模板引用变量或组件/指令/元素属性。
如果[target]="methodCall()" 是一种错误的绑定方式,那么为什么 Angular 允许这样做?如果这是正确的绑定方式,那么我在上一段中给出的理解是否错误?
另外,我应该如何修改我的代码以反映正确的事情:
- 显示当前的健康状况,也就是说,只是一个进度条
- 自动调用
getHealth(): integer,其中包含计算健康的业务逻辑。 0 将在健康进度条上不显示任何内容。 100 会填满进度条。
最后,我注意到 getHealth() 在每次鼠标移动或单击时都会无缘无故地被调用 10-20 次。由于Angular的这种更改检测行为,将方法绑定到目标属性可能不是一个好习惯?
【问题讨论】:
-
另请查看this question
标签: angular angular2-changedetection angular2-databinding