gpt4 book ai didi

angularjs - Angular 2 : Component input/output or updating a service property

转载 作者:行者123 更新时间:2023-12-03 06:51:33 24 4
gpt4 key购买 nike

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

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

我有一个父 task 组件、list 组件和一个 list-item 组件(以及一些其他相关组件),此外我有一个任务服务

主要的task组件可以使用list组件(以及something-realted组件,所使用的许多组件需要了解并可能进行更改activeItemId),如下所示:

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

list组件可以通过这种方式使用list-item(active是一个管道,也是项目的一个属性):

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

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

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

最佳答案

得到了great answer通过 Angular Google 群组:

Without reading your full explanation, I'd say use binding if possible, otherwise use a shared service.

Binding is not possible when - the two components aren't direct parent/children - the component is added by the router - the component is added by DynamicComponentLoader

If you share the data between several components at once it might be easier to not use binding even when one or some of them are direct children.

谢谢你,冈特!

关于angularjs - Angular 2 : Component input/output or updating a service property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35552138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com