Le titre dit tout, vraiment. Comment puis-je obtenir la valeur actuelle d'un observable sans y souscrire? Je veux juste la valeur actuelle une fois et non de nouvelles valeurs car elles arrivent ...
Vous devez utiliser BehaviorSubject ,
- BehaviorSubject est similaire à ReplaySubject, à la différence qu’il ne se souvient que de la dernière publication.
- BehaviorSubject nécessite également que vous lui fournissiez une valeur par défaut de T. Cela signifie que tous les abonnés recevront une valeur immédiatement (sauf si c'est déjà terminé).
Cela vous donnera la valeur la plus récente publiée par l'Observable.
BehaviorSubject fournit une propriété getter
nommée value
pour obtenir la valeur la plus récente transmise.
//Declare a Subject, you'll need to provide a default value.
var subject: BehaviorSubject<string> = new BehaviorSubject("a");
USAGE:
console.log(subject.value); // will print the current value
Je ne sais pas si c'est ce que vous recherchez. Probablement écrire ce comportement dans un service. Déclarez-le comme privé et n'exposez que la valeur que vous avez définie. Quelque chose comme ça
@Injectable({
providedIn: 'root'
})
export class ConfigService {
constructor(private bname:BehaviorSubject<String>){
this.bname = new BehaviorSubject<String>("currentvalue");
}
getAsObservable(){
this.bname.asObservable();
}
}
De cette manière, les utilisateurs externes ont uniquement accès à l'abonnement à behaviorSubject et vous pouvez définir la valeur souhaitée dans le service.