Avatar ·

Qual é a diferença entre Subject e BehaviorSubject no RxJS?

Olá a todos! Comecei a estudar RxJS no Angular e fiquei confuso sobre a diferença entre Subject e BehaviorSubject. Ambos parecem ser usados para criar Observable, mas não entendo quando usar cada um. Tenho um serviço para gerenciar o estado do usuário: ```typescript import { Injectable } from '@angular/core'; import { Subject } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class UserService { private userSubject = new Subject(); user$ = this.userSubject.asObservable(); login(user: User) { this.userSubject.next(user); } logout() { this.userSubject.next(null); } } ``` O problema ocorre quando me inscrevo em `user$` antes de `login()` ou `logout()` ser chamado. O assinante simplesmente não recebe nenhum valor, mesmo que o usuário já tenha feito login anteriormente. Preciso armazenar o estado atual separadamente e passá-lo na inscrição, o que parece uma gambiarra. Ouvi dizer que o BehaviorSubject pode resolver esse problema,