Observable
의 입력으로 Observable
을 필터링 중입니다. 필터링 입력은 사용자가 제공합니다.Observable에서 startWith를 사용하여 Observable 만들기
필터링은 RxJS 연산자 combineLatest
을 사용하여 수행됩니다. 즉,이 스트림을 구독 할 때 소스 Observables에서 방출이 발생할 때까지 아무런 값도 방출되지 않습니다. 사용자 입력이 발생하기 전에 생성 된 스트림을 필터링없이 생성하고자 할 것입니다.
나는 startWith
연산자를 사용하여 스트림에 생성시 방출이 발생해야한다고 생각하지만 Observable에서이 값을 시드하는 방법을 알아낼 수 없습니다. 데이터가 Firebase에서 제공되고 FirebaseListObservable
의 것으로 처리되므로 Observable을 사용합니다.
다음은 현재 내가하고있는 일의 결합 된 버전입니다.
let tagInput = document.getElementById('tags');
let tagExclusionStream = Observable
.fromEvent(tagInput, 'input')
.map((e: any) => createsArrayFromInput(e.target.value));
let allTags: Observable<any[]> = getAllTags();
let filteredTags = allTags
.combineLatest(tagExclusionStream, (tags, tagExclusions) => {
return tags.filter((tag: any) => tagExclusions.indexOf(tag.$key) == -1)
});
// I want this to print out without needing the tagExclusionStream to emit first
filteredTags.subscribe(tags => console.log("Tags:", tags))
/여기 내 접근이 완전히 꺼져 있으면 알려 주시기 내가 RxJS에 새로 온 사람으로서 더 나은 방법이있다하십시오. 스트림에 방출을 생성 -이 접근 방식을 좋아
let tagExclusionStream = Observable
.fromEvent(tagInput, 'input')
.map((e: any) => createsArrayFromInput(e.target.value))
.startWith('');
: 당신은 당신이 할 수있는 다른 장소에서
tagExclusionStream
를 사용하는 경우, 또는: –