【发布时间】:2020-11-26 07:05:15
【问题描述】:
通常在 Angular 中,我习惯于以示例中的方式处理导致组件输出触发的 html 事件:
//component:
@Output()
imageHoverEnter = new EventEmitter<void>();
...
onImageHoverEnter() {
this.imageHoverEnter.emit();
}
//template:
<div>
<img src="..." (mouseenter)="onImageHoverEnter()">
</div>
有一个单独的方法来保护正在使用的@Output 的原因与我已经养成的分离控制器和视图逻辑并且没有东西泄漏的习惯有关。这可以帮助进行自动测试。
但是我已经看到了各种示例,包括来自 Google 自己的文档(Angular Material),它直接在模板中使用 @Output 发射器:
<div>
<img src="..." (mouseenter)="imageHoverEnter.emit()">
</div>
此外,如果我们查看@Input() 字段,它们大部分时间都直接在模板中使用。
现在我很想做同样的事情并放弃“调用函数的函数”方法(在明显没有其他副作用的情况下),我认为没有理由不这样做,除了我不是过去常常查看控制器并发现它比平时更空,并且必须在模板中查找某些逻辑部分。
这样做有什么大的缺点吗?
【问题讨论】:
标签: angular angular-template separation-of-concerns