Dans les applications angulaires, les observables sont couramment utilisés pour diffuser des données entre des composants et des services. Une question courante qui se pose est de savoir comment récupérer la valeur actuelle d'un observable sans s'y abonner.
Dans le code fourni, le service SessionStorage utilise un sujet nommé _isLoggedInSource pour émettre l'état de connexion actuel. Bien que la propriété isLoggedIn expose cet observable, elle n'a pas de concept de valeur actuelle.
La solution à ce problème réside dans l'utilisation d'un BehaviorSubject au lieu d'un sujet. Un BehaviorSubject garde une trace de la valeur émise la plus récente et l'émet immédiatement aux nouveaux abonnés.
<code class="typescript">import {BehaviorSubject} from 'rxjs/BehaviorSubject'; @Injectable() export class SessionStorage extends Storage { private _isLoggedInSource = new BehaviorSubject<boolean>(false); isLoggedIn = this._isLoggedInSource.asObservable(); constructor() { super('session'); } setIsLoggedIn(value: boolean) { this.setItem('_isLoggedIn', value, () => { this._isLoggedInSource.next(value); }); } }</code>
Maintenant, vous pouvez récupérer l'état de connexion actuel à l'aide de la méthode getValue() de BehaviorSubject :
<code class="typescript">isLoggedIn = sessionService._isLoggedInSource.getValue();</code>
En utilisant BehaviorSubject, vous pouvez accéder à la valeur actuelle d'un observable même sans vous y abonner. Ceci est particulièrement utile lorsque vous devez lire la dernière valeur émise à des points spécifiques de votre code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!