Данные из одного потока направить в другой
Имеется компонент Angular с таблицей. Данные таблицы хранятся в
users: Observable<User[]> Также имеется сервис подчитывания данных из БД. userService.getUserList(start, limit): Observable<User[]> В таблице users указан как источник данных:[dataSource]="users" На таблицу навешено событие подчитывания данных, которое динамически подгружает данные из БД. Как сделать так, чтобы Observable<User[]> которые приходят из сервиса userService.getUserList суммировалось с данными, которые уже загружены? |
https://www.learnrxjs.io/operators/c...atestfrom.html
как-то так userService.getUserList().pipe(withLatestFrom(users)).subscribe(([data1, data2) => {}) |
Уточнение к вопросу
Правильно ли я понимаю, что на основе этой строки сформируются данные, на которые мы можем подписаться и получить в итоге данные двух массивов? Это немного не то, что надо было. Я не точно выразился. Вопрос надо уточнить как следующий:
Как сделать так, чтобы содержимое потока, который возвращает userService.getUserList(start, limit) запихнуть в поток users. Т.е. получили данные и при помощи гипотетической функции put запихнули их в users: userService.getUserList().subscribe( (data: User[]) => { users.put(data); }); |
Можно тогда users представить как BehaviorSubject/Subject и прокидывать туда данные через next
|
Спасибо за ответ. Предварительно перечитав доки пришел к такому же выводу. Получилось примерно так:
export class AppComponent { users$ = new Subject<User[]>(); constructor(private db: DbService){} read(): void{ this.db.getUsers().subscribe( (data: User[]) => { this.users$.next(data); }); } } |
можно даже так (смысл тот же, просто короче)
read(): void{ this.db.getUsers().subscribe(this.users$); } |
Часовой пояс GMT +3, время: 03:08. |