说,我有一个组件,用途如下:
<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的这种更改检测行为,将方法绑定到目标属性可能不是一个好习惯?