Bonjour

Je vous explique, j'ai un une liste d'utilisateur que j'alimente et mets à jour lors de chaque connexion sur le serveur. Cette liste est partagé par tous les composants

Voici le service qui contient la liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
export class DataServiceService {
  userDataSource: BehaviorSubject<User[]> = new BehaviorSubject([]);
  userData = this.userDataSource.asObservable();
 
  constructor() { }
 
  addUser(user: User) {
    const currentValue = this.userDataSource.value;
    const updatedValue = [...currentValue, user];
    this.userDataSource.next(updatedValue);
  }
 
  getArrayUser(): Observable<User[]> {
    return this.userData;
  }
 
  updateArrayUser(users: User[]) {
    this.userDataSource.next(Object.assign([], users));
  }
}
Mon problème c'est lorsqu'un utilisateur se déconnecte, je souhaite enlever cet utilisateur de la liste. Donc je procède comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
      this.dataService.getArrayUser().subscribe(result => {
        let oldUSers = result;
        let newUSers = oldUSers.splice(oldUSers.findIndex(item => item.id == user.id), 1);
        this.dataService.updateArrayUser(newUSers);
      });
Et là je tombe sur une infinite loop puisque je fais un update dans un subcribe.. Avez vous une idée pour supprimer correctement cet utilisateur depuis son id ?

Merci