That made sense, thanks a lot Günter!

Eric

On Tuesday, February 23, 2016 at 7:47:05 AM UTC+2, Günter Zöchbauer wrote:
>
> 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.
>
>
>
> On Monday, February 22, 2016 at 2:23:25 PM UTC+1, [email protected] wrote:
>>
>> Learning Angular 2 and trying to understand when I should use a component 
>> input/output and when I should better update a service property (possibly 
>> attached with an EventEmitter if updates are needed).
>>
>> I have a list of, say, tasks, and each list items shows various info and 
>> options for this list item. This list works in the way that only one list 
>> item is active, and the active one is on the top of the list. One of those 
>> options for each list item is to activate it (if it is not already active), 
>> but other components could also possibly change which is the active item.
>>
>> I have a parent `task` component, `list` component and a `list-item` 
>> component (and some other related components), and in addition I have a 
>> `task-service`.
>>
>> The main `task`component could use `list`component (and 
>> `something-realted` component, many of the components used needs to know 
>> and possibly change the `activeItemId`), like this:
>>
>>     <list [(active-item-id)]=“activeItemId”></list>
>>     <something-related 
>> [(active-item-id)]=“activeItemId”></something-related>
>>
>> The `list`component could use `list-item` this way (`active` is a pipe 
>> and also a property on item):
>>
>>     <list-item *ngFor=“#item of items | active” 
>>                (item)=“item”
>>                [(active-item-id)]=“activeItemId”>
>>     </list-item>
>>
>> But since I have a `task-service` that contains various task related, I 
>> could use the already existing service property `activeItemId` (with an 
>> eventemitter), and all the task-components could just get info (and be 
>> updated) via this property, instead of “sending” the property back and 
>> forth via various components via inputs/outputs.
>>
>> When would it be appropriate to just use a service for something like 
>> this and when would it be appropriate to use input/outputs for components 
>> instead?
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to