J'essaie de transmettre un objet JavaScript comme un élément observable à un composant fromage.
Pour ce faire, j'ai créé un service Ce faisant, je peux vous abonner à l'observable dans mon autre composant.
Je récupère les données dans l'autre composant à l'aide de: p> Je ne reçois aucune nouvelle mise à jour, une fois que Le comportement est le même que si je vous abonner à l'aide de Qu'est-ce que je manque? p> p> pass.service.ts code> qui contient une déclaration de variable comme suit:
PublicsedData: tout code> p>
DATA code> change cependant. P>
observable.first () code> p>
3 Réponses :
Utiliser le sujet a plus de sens, ou peut-être injecter cela.fb à votre service si vous utilisez une injection de dépendance
Vous devez utiliser un Sujet (les sujets sont également observables). Créer un sujet dans votre service. Ce sujet sera utilisé par vos composants pour partager des données. P> composant 1 strong> p> passe de nouvelles données sur le sujet par appeler pour passer tous les événements, y compris est averti sur les nouvelles données du sujet en vous abonnant. p> Importer {Sujet} de 'RxJS'; CODE>
suivant code>. p>
erreur code> et
compléter code> Events d'un Observable à un sujet que vous pourriez faire:
this.fb.user $ .subscribe (cela.Passservice.PassedData); code>
Mais cela signifiera
this.passservice.PassedData code> juste miroirs
this.fb.user $ code> et vous pouvez simplement utiliser
this.fb.user $ code> code> directement à la place. P>
this.passService.passedData.subscribe(data => this.data = data);
Vous pouvez simplement définir la propriété dans votre service comme ceci: alors vous pourriez y souscrire dans n'importe quel composant qui en a besoin. p> mais il regarde réellement Comme si vous avez déjà un autre service (fb?) qui a une propriété US $? Si tel est le cas, vous pouvez vous abonner à la propriété utilisateur $ dans chaque composant qui en a besoin. P> Vous pouvez également le conduire via un Sarreurplay (1) code> pour partager le résultat avec tous les abonnés : P>
user$ = this.fb.user$.pipe(shareReplay(1));
Que voulez-vous dire "une fois que les données observées changent" i>? S'il vous plaît donner un exemple de reproductible minimal .
Veuillez consulter le code mis à jour.
L'autre composant est souscrit à un objet totalement différent i>, puis.
J'ai fait une autre modification. Je suis conscient que c'est un autre objet. Ceci est nécessaire dans mon exemple. Je suis abonné à un observable et en utilisant les données observées pour en créer un autre. Pourquoi cela ne fonctionne-t-il pas?
Vous créez un observable avec
de (données) code> et ne jamais émettre à nouveau de celui observable. Ceci est attendu. Si vous faites
SEATR = [1, 2]; code>
const obs = de (r) code>, puis
arr.push (3) code>, abonnés à
obs code> ne recevra pas le 3ème élément.
Si vous savez que, alors ce n'est pas clair, pourquoi pensez-vous i> travaillerait, utilisez un sujet à la place.