Observable<TableDefinition[]>;
в html там идет через async pipe обращение к этому массиву. В конструкторе этот обсервабл инициализурется, все работает, все хорошо. Теперь задача еще поиск сделать в этой таблице. Поиск я сделал, подписываюсь на valueChanges, через switchMap делаю загрузку новых данных отфильтрованных и собственно вопрос: а как обновить этот обсервабл?)))
Нашел только, что лучше это переделать в связку BehaviourSubject и tables$ = subject.asObservable(), можно как-то лучше? или это +-идеально для такого случая?
Можете изначально сделать поток на базе switchMap, то есть (псевдокод) tables$ = valueChanges.switchMap(value => request(value))
там проблема что она изначально инициализурется от route.params.pipe()
Ну тогда как вариант combineLatest из изначального потока и valueChanges
Ну как бы можно и через behavior (через него наверно почти все можно сделать), я просто не очень понимаю как это будет выглядеть в итоге и для чего он нужен. Типа из valueChanges значения в сабжект записывать?
В моей голове это выглядет так: - Это при изменение инпута this.searchControl.valueChanges.pipe( takeUntil(this.destroy$), switchMap( .. apiCall .. ), tap(value => this.behaviourSubject.next(value)) ) .subscribe(); А в контрускторе, (хз почему не в OnInit, не я писал это) следующее: router.params.pipe( switchMap( ... api call ...), tap(value => this.behaviourSubject.next(value)) )
Может вам и завязаться на queryParams, а в контроле поиска подписаться и менять эти самы queryParams
Обсуждают сегодня