¿Cuál es la diferencia entre Subject y BehaviorSubject en RxJS?
¡Hola a todos! Acabo de empezar a aprender RxJS en Angular y me confundí con la diferencia entre Subject y BehaviorSubject. Parece que ambos se usan para crear Observable, pero no entiendo cuándo aplicar cada uno.
Tengo un servicio para gestionar el estado del usuario:
```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);
}
}
```
El problema surge cuando me suscribo a `user$` antes de que se haya llamado a `login()` o `logout()`. El suscriptor simplemente no recibe ningún valor, incluso si el usuario ya inició sesión antes. Tengo que almacenar el estado actual por separado y pasarlo al suscribirme, lo que parece un parche.
He oído que BehaviorSubject puede resolver este problema.