RxJs d'obtenir une valeur à partir d'observables
En composant :
singleEvent$: Observable<Event>;
Sur l'init, je reçois observables
this.singleEvent$ = this._eventService.events$
.map(function (events) {
let eventObject = events.find(item => item.id === eventid);
let eventClass: Event = new Event(eventObject);
return eventClass;
});
Comment puis-je prendre la valeur actuelle comme event.name
?
S'il vous plaît ajouter plus de code à la question. Un plunk ferais aussi.
OriginalL'auteur SuperOrange | 2016-06-03
Vous devez vous connecter pour publier un commentaire.
Pour obtenir des données à partir d'une observable, vous devez vous abonner:
Dans le modèle, vous pouvez lier directement à observables à l'aide de la
| async
pipe:Désolé, je ne peux pas faire tout le sens de votre commentaire.
Je pense qu'il veut dire que dans le service qu'il utilise .abonnez-vous et ensuite avoir un sujet (ou similaire) que le composant utilise. disons qu'il est un composant de la page qui ont un enfant qui prend un async d'entrée. ensuite, le composant parent a besoin de certaines données pour les autres demandes?
désolé, mais ce n'en est pas plus claire. Si c'est effectivement une question qui vous dérange, alors je vous suggère de créer une nouvelle question, qui inclut le code qui montre ce que vous essayez d'accomplir.
Je crois que ce qu'il manque, c'est qu'il doit utiliser .abonnez-vous dans le composant. 🙂
OriginalL'auteur Günter Zöchbauer
À ajouter sur Günter Zöbauer réponse, un BehaviorSubject peut-être ce que vous cherchez si vous êtes à la recherche de façon synchrone obtenir la valeur à l'intérieur de votre Observables.
Un BehaviorSubject est une Observable qui a toujours une valeur, et vous pouvez les appeler
myBehaviorSubject.getValue()
oumyBehaviorSubject.value
de façon synchrone récupérer la valeur de la BehaviorSubject détient actuellement.Puisqu'il est lui-même un fait observable ainsi, vous pouvez toujours vous abonner à la BehaviorSubject asynchrone réagir à des changements dans la valeur qu'elle détient (par exemple
myBehaviorSubject.subscribe(event => { this.event = event })
) et l'utilisation de la async tuyau dans votre composant de modèle (par exemple{{ myBehaviorSubject | async }}
).Voici quelques utilisation pour correspondre à votre exemple donné pour créer un BehaviorSubject dans votre composant de service:
récemment été vraiment aimer la async/await API pour les mêmes cas d'utilisation qui pourrait être d'intérêt @Narvalex. L'idée est que vous utilisez comme suit:
const foo = await obs$.pipe(take(1)).toPromise()
à l'intérieur d'une fonction asynchrone.Merci pour l'astuce des hommes. C'était en effet une question d'entrevue au sujet de la différence entre un Sujet et BehaviourSubject et il est tout clair pour moi maintenant.
OriginalL'auteur ZackDeRose