【问题标题】:Angular 2: Component input/output or updating a service propertyAngular 2:组件输入/输出或更新服务属性
【发布时间】:2016-02-22 11:12:32
【问题描述】:

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

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

我有一个父组件tasklist 组件和一个list-item 组件(以及一些其他相关组件),此外我还有一个task-service

主要的taskcomponent 可以使用listcomponent(和something-realted 组件,很多使用的组件需要知道并可能更改activeItemId),像这样:

<list [(active-item-id)]=“activeItemId”></list>
<something-related [(active-item-id)]=“activeItemId”></something-related>

listcomponent 可以这样使用list-itemactive 是一个管道,也是项目的一个属性):

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

但由于我有一个包含各种相关任务的task-service,我可以在服务上使用已经存在的activeItemId-property(具有事件发射器),并且所有各种任务组件都可以获取信息(并通过此属性进行更新),而不是通过各种组件通过输入/输出来回“发送”该属性。

什么时候只适合这样的事情,什么时候适合使用组件的输入/输出?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    通过 Angular Google 群组获得great answer

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

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

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

    谢谢你,君特!

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多