Я пытаюсь сделать следующее:
- Взять наблюдаемую
text$
(в моем приложении это входной поток), а затем передать это значение от ввода до родительского компонента,родительский компонент затем вызовет API и получит некоторые данные. - ПОДОЖДИТЕ, пока родительский объект не отправит обратно наблюдаемую
(<string[]>)
как @input
, родительский компонент отправит обратно компоненту нижеданные, полученные из API. - После того, как мы знаем, что у нас есть новые данные, извлеченные из родительского компонента, я хочу выполнить другой канал для той же наблюдаемой (
text$
), которая является моим входным потоком.
Пока что это то, что я придумал:
import { of, Observable, ConnectableObservable } from 'rxjs';
import { take, map, publish, tap, toArray, distinctUntilChanged, debounceTime, switchMap, repeat } from 'rxjs/operators';
const tt = of('a','b','c','d')
let text$ = of('nct')
const data = tt.pipe(
map((result: any) => {
return result
})
) as Observable<string[]>
let dataSnap;
data.pipe(toArray()).subscribe(x => dataSnap = x)
let obs1 = text$.pipe(
distinctUntilChanged(),
debounceTime(250),
// tap((term) => this.target = text$),
tap((term) => console.log("handleTypeahead", term)),
// tap((term) => this.onTypeahead.emit(term)),
) as ConnectableObservable<string>
let obs2 = obs1.pipe(
publish(),
switchMap(term => term === '' ? [] : data)
) as ConnectableObservable<string>
data
.pipe(
tap(x => console.log(dataSnap)),
toArray(),
).subscribe(x => {
if (x == dataSnap){
repeat(2)
}
else {
obs2.connect()
}
})
Или здесь, на стеке: https://stackblitz.com/edit/typescript-p3yoqa В настоящее время моя проблема, похоже, связана с connect
, гдеЯ получаю эту ошибку: Property 'connect' does not exist on type 'Observable<string>'
.Я попробовал предложенные решения, но, похоже, реализовал их неправильно.Кроме того, я не уверен, что моя логика правильна, поскольку я новичок в RXJS.