Tengo dos elementos de suscripción como ves en la imagen: 
uno de ellos es entrada de búsqueda otro es un filtro de selección. Quiero cambiar el resultado cuando uno o ambos cambian. Uso Rxjs combineLatest de modo que cuando ambos o la entrada de búsqueda cambian, todo está bien, pero al cambiar el tipo de Socio al principio, la respuesta no cambia.
ngOnInit() { super.ngOnInit(); this.getAllPartners(); combineLatest([this.searchPartnerFc.valueChanges, this.filterFc.valueChanges]) .pipe( switchMap(([search, filter]) => { let partnersBySearch = this.getSearchResult(search); let partnersByFilter = this.getFilterResult(filter); this.partners = partnersBySearch.filter(item => partnersByFilter.indexOf(item) > 0); return this.partners; }), ) .subscribe(); } getFilterResult(filterKey: string) { if (filterKey == 'All') return this.allPartners; else return this.allPartners.filter(partner => partner.partnerType == filterKey); } getSearchResult(searchString: string) { return this.allPartners.filter(x => x.partnerName.toLowerCase().includes(searchString)); }Puede lograr el resultado deseado al proporcionar una emisión predeterminada para cada uno de sus observables de origen usando startWith :
combineLatest([ this.searchPartnerFc.valueChanges.pipe(startWith('')), this.filterFc.valueChanges.pipe(startWith('All')) ]).pipe( ... );Creo que no funciona debido a la naturaleza del operador combineLatest . Solo se emitirá cuando ambos observables hayan emitido primero un valor inicial. Entonces, cuando solo se emite el primer observable y el segundo no, no hará nada: https://www.learnrxjs.io/learn-rxjs/operators/combination/combinelatest
Creo que necesita un operador de combinación aquí:https://www.learnrxjs.io/learn-rxjs/operators/combination/merge
También eche un vistazo aquí en este hilo: Cómo 'esperar' dos observables en RxJS