Fondamentalement, j'essaie de gonfler BehaviorSubject<[]>
avec un tableau de données qui sera chargé en morceaux.
BehaviorSubject<[]>
sera ajouté avec un nouveau bloc de données (comme Array.Push
) mais je ne veux pas utiliser un autre tableau pour stocker et ajouter à BehaviorSubject.next
car cela rendra le rendu trop long à mesure que les données augmentent avec le temps.
Toute suggestion?
Vous pouvez utiliser la méthode getValue()
pour réaliser ce que vous voulez faire.
Exemple:
data = new BehaviorSubject<any[]>([]);
addData(foo:any):void{
// I'm using concat here to avoid using an intermediate array (Push doesn't return the result array, concat does).
this.data.next(this.data.getValue().concat([foo]));
}
Au lieu d'utiliser concat
, vous pouvez utiliser à la place l'opérateur spread:
data = new BehaviorSubject<any[]>([]);
addData(foo: any): void {
this.data.next([...this.data.getValue(), ...foo])
}
J'ai trouvé que c'était un peu plus lisible qu'un simple concat