2017-09-08 4 views
1

J'écris un module qui contient trois composants distincts. Ces composants fonctionnent ensemble, il est donc logique d'utiliser un service pour vous aider à garder une trace de tout.Angular - Partager des données entre des composants frères et sœurs sans partager entre les instances

|  
|- wrapper.component.ts 
| 
|- wrapper.service.ts 
| 
|- wrapper.module.ts 
| 
|- child-component1.component.ts 
| 
|- child-component2.component.ts 

Le problème est que, si vous créez deux instances du composant de base dans l'application, le Service partage des données entre les deux instances du composant.

Quelle est la bonne façon de partager des données entre frères et sœurs sans le partager entre toutes les instances du composant?

Répondre

2

Fournir le service au niveau des composants:

@Component({ 
    .... 
    providers: [myService] 
}) 

De cette façon, l'instance de service est partagé entre le composant et ses enfants, mais pas d'autres instances du composant.

+0

Merci, Vega! C'est ce que je cherchais mais je n'ai pas trouvé sur Google. Je vais essayer! Dois-je inclure le service dans chaque composant, alors? –

+0

Oui, chacun. Et ne fournissent pas au niveau du module. – Vega

+0

Lire un peu plus ici: https://stackoverflow.com/a/45877589/5468463 – Vega

0
  1. Vous pouvez émettre un événement à l'aide émetteur d'événements du composant enfant 1 au changement parent
  2. l'entrée à l'enfant 2 du parent avec les données émises par enfant 1
  3. accéder aux données ngOnChange de l'enfant 2