RXJS Цепные ответы от разрешенных данных, данных фильтрации и бесконечной прокрутки данных - PullRequest
0 голосов
/ 23 марта 2019

Существует 3 различных элемента UI / UX, которые влияют на данные, которые пользователь видит в приложении.Первый - это разрешенные данные из распознавателя.Второй - это объединенные данные из действия бесконечной прокрутки.И третий (фильтр) заменяет все данные другим набором данных того же типа.

Пока что я могу объединить разрешенные и бесконечные данные для достижения плавной прокрутки.Это мой код.

this.referrals$ - это наблюдаемый поток, который отображается в DOM.

//Resolved data from this.activatedRoute.data
const resolvedReferrals$ = this._getResolvedData()
            .pipe(map((response: ReferralSearchResponse ) => response.data));

this.referrals$ = merge(resolvedReferrals$, this._newReferrals$)
         .pipe(tap(console.log), scan((acc, val) => acc.concat(...val), []), tap(console.log));

//infinite scroll action where this._newReferrals$ is a Behavior Subject.
 getMoreReferrals(event: any) {
    this.getReferrals()
        .subscribe((values: ReferralSummary[]) => {
          this._newReferrals$.next(values);
          event.target.complete();
        });
  }

Я использую ту же навигацию по страницам, чтобы получить отфильтрованные данные черезresolver.

 this._router.navigate([], { relativeTo: this._activatedRoute, queryParams: this.filterCriteria })

Когда я применяю фильтр и распознаватель отправляет мне новые данные, эти данные добавляются в конец списка вместо замены списка.Я понимаю, почему это так.Однако я не знаю, как именно это исправить RxJS .

...