4 Réponses :
Vous devez vous y abonner. Maintenant, vous enregistrez l'objet Observable lui-même, mais ce que vous devez faire est de vous y abonner afin que, lorsqu'il sera résolu, votre abonnement l'écoutera puis imprimera ce qu'il résout.
Vous devez vous abonner aux observables pour obtenir les données.
ceci. $ connecté.subscribe ((data: boolean) =>
{
console.log («suis-je connecté», données);
}
Vous n'êtes pas obligé de définir le type du paramètre data comme booléen . Cela devrait déjà être fait pour vous lorsque vous avez converti Observable en un type d'union de boolean .
Vous pouvez utiliser deux méthodes pour dérouler la valeur d'un observable.
En utilisant le tube async dans votre modèle:
Suis-je connecté: {{$ isLoggedinSource | async}}
vous abonnant à l'Observable dans votre composant: import { Subscription } from 'rxjs';
...
subscription: Subscription;
...
this.subscription = this.$loggedin
.subscribe(data => console.log('am i logged in ', data));
...
ngOnDestroy() {
this.subscription.unsubscribe();
}
Si cet observable $ connecté est récurrent, et que vous utilisez l'approche 2, vous devrez l'attribuer à une propriété de type Subscription , puis appeler unsubscribe dessus dans le ngOnDestroy .
Avec la première approche, vous n'êtes pas vraiment obligé de le faire.
SiddAjmera, Merci pour la réponse exceptionnelle. Je n'ai même jamais pensé à utiliser ngOnDestroy (). Il est nécessaire pour les fuites de mémoire je pense. Je comprends parfaitement la deuxième approche, je l'ai mise en œuvre et ça marche!
Si vous ne voulez pas vous abonner, vous pouvez obtenir la valeur observable en utilisant async et await , mais pour ce faire, vous devez convertir le Observable dans une `Promise.
Quelque chose comme ceci:
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
public loggedin: boolean;
public otherValue: boolean;
constructor(private auth: AuthenticationService) { }
async ngOnInit() {
this.loggedin = await this.auth.$isLoggedinSource.toPromise();
this.otherValue = await this.auth.$otherObservable.toPromise();
}
}
Copie possible de Comment obtenir la valeur actuelle du sujet RxJS ou Observable?
Il n'y a aucune relation entre la bibliothèque rxjs et angular. Votre question est entièrement traitée dans l'indicateur de duplication. si
$ isLoggedinSourceest un BehaviorSubject comme le suggère votre balise, alors vous pouvez simplement obtenir la valeurthis.auth. $ isLoggedinSource.getValue ();Florian, je n'utilise ni angular2 ni rxjs5 dans mon application. Je n'ai pas envie d'apprendre cette technologie dépassée. Je suis à la fine pointe avec angular 7 et rxjs6. Ceci est ma première application. La question a deux ans. Une vie dans le développement de logiciels. BehaviorSubject n'est pas mentionné dans cette question.
1.rxjs est juste une bibliothèque, rxjs6 a remplacé rxjs5, mais votre question ne concerne pas une fonctionnalité spécifique de rxjs6.2.votre question a deux balises:angularetbehaviorubject, donc oui, BehaviorSubject est mentionné ici.BehaviorSubject n'est PAS mentionné dans la question à laquelle vous faites référence. J'ai obtenu une réponse de pointe à cette question. Je suis content. J'espère qu'une autre personne trouve cette réponse actuelle également utile.