Angularjs 角度2:组件输入/输出或更新服务属性

Angularjs 角度2:组件输入/输出或更新服务属性,angularjs,Angularjs,学习Angular 2并尝试理解何时应该使用组件输入/输出,何时应该更好地更新服务属性(如果需要更新,可能会附加EventEmitter) 我有一个任务列表,每个列表项都显示了该列表项的各种信息和选项。此列表的工作方式是,只有一个列表项处于活动状态,而活动项位于列表的顶部。每个列表项的选项之一是激活它(如果它尚未处于活动状态),但其他组件也可能更改哪个是活动项 我有一个父任务组件、列表组件和一个列表项组件(以及一些其他相关组件),此外我还有一个任务服务 主任务组件可以使用列表组件(和一些相关的组

学习Angular 2并尝试理解何时应该使用组件输入/输出,何时应该更好地更新服务属性(如果需要更新,可能会附加EventEmitter)

我有一个任务列表,每个列表项都显示了该列表项的各种信息和选项。此列表的工作方式是,只有一个列表项处于活动状态,而活动项位于列表的顶部。每个列表项的选项之一是激活它(如果它尚未处于活动状态),但其他组件也可能更改哪个是活动项

我有一个父
任务
组件、
列表
组件和一个
列表项
组件(以及一些其他相关组件),此外我还有一个
任务服务

任务
组件可以使用
列表
组件(和
一些相关的
组件,使用的许多组件需要知道并可能更改
活动项ID
),如下所示:

<list [(active-item-id)]=“activeItemId”></list>
<something-related [(active-item-id)]=“activeItemId”></something-related>
但是,由于我有一个
任务服务
,其中包含各种与任务相关的属性,因此我可以在该服务上使用已经存在的
activeItemId
-属性(它有一个eventemitter),并且所有不同的任务组件都可以通过该属性获取信息(并进行更新),而不是“发送”该属性通过输入/输出通过各种组件来回移动

什么时候才适合将服务用于这样的事情,什么时候才适合将输入/输出用于组件?

通过Google Group获得了一个答案:

如果没有阅读您的完整解释,我会说如果 可能,否则使用共享服务

在以下情况下无法绑定: -这两个组件不是直接的父/子组件 -该组件由路由器添加 -该组件由DynamicComponentLoader添加

如果同时在多个组件之间共享数据,则可能会 即使其中一个或一些绑定是直接的,也更容易不使用绑定 孩子们

谢谢你,甘特

<list-item *ngFor=“#item of items | active” 
           (item)=“item”
           [(active-item-id)]=“activeItemId”>
</list-item>