0
votes

Comment extraire les valeurs de comportementouralsubject en angulaire

J'ai créé un service de compte, pour mon application angulaire et gère le login et la déconnexion. Et cela fonctionne parfaitement. Mais j'ai un problème, j'ai utilisé des observables comportementalsubject pour rendre les variables.

J'essaie de récupérer la valeur LoginStatus et la chaîne de nom d'utilisateur sur le composant à l'aide du service, mais l'observable renvoie un objet, et je suis avoir des problèmes d'extraction de la chaîne de l'objet. Comment puis-je extraire des types de variables des observables comportementalosubject? P>

Le service de compte ... p> xxx pré>

Le composant à l'aide du service P>

import { Component, Input, OnInit } from '@angular/core';
import { AccountService } from 'src/app/services/account.service';
import { Observable } from 'rxjs';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {

  pgtitle:string = "SCB Dashboard";

  loginStatus$ : Observable<boolean>;
  username$ : Observable<string>;

  constructor(
    private acc:AccountService
  ){}

  ngOnInit() {
   this.loginStatus$ = this.acc.isLoggedIn;
   this.username$ = this.acc.currentUserName;
   

   console.log(this.loginStatus$);  //here it ruturns an object
   console.log(this.username$);   //and here too... 

  }

}


3 commentaires

ceci.Asername $ .Subscribe (valeur => {console.log (valeur)});


this.loginstatus $ .getvalue () et cela.Aname $.getvalue () ferait le tour ou juste ceci.Loginstatus $ .value et ce nom $.Value


Oui, cela devrait fonctionner. Ici, un lien vers la documentation correspondante: github.com/reactive-extensions/rxjs/blob/master/doc/api/...


4 Réponses :


0
votes

Vous devez S'abonner CODE> à l'observable pour obtenir la valeur de la valeur:

this.loginStatus$.subscribe(value => {
   console.log(value); // access value
});


0 commentaires

1
votes

RxJ ComportourSubject a une méthode asobservable (), vous pouvez générer votre observable de celui-ci xxx


2 commentaires

Les sujets de comportement sont déjà observables, pas besoin de créer une nouvelle observable avec asobservable


Si ce code est en service, il serait une bonne pratique d'utiliser le code tel que celui-ci. Ensuite, marquez le sujet / le comportement à titre privé et le public observable de sorte que le code de composant peut accéder à l'observable, mais pas directement injecter des informations dans le flux.



0
votes

Essayez ceci:

get isLoggedIn(){
  return this.loginStatus.value; 
}

get currentUserName(){
  return this.userName.value;  
}


0 commentaires

0
votes

Ceci devrait également fonctionner:

  ngOnInit() {
   this.loginStatus$ = this.acc.isLoggedIn.pipe(
     tap(status => console.log(status))
   );
   this.username$ = this.acc.currentUserName.pipe(
     tap(userName => console.log(userName))
   );

  }


0 commentaires