Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

290
Views
¿Por qué Rxjs combineLatest depende de la suscripción y no llama cuando uno de ellos cambia?

Tengo dos elementos de suscripción como ves en la imagen: ingrese la descripción de la imagen aquí

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)); }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

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( ... );
about 4 years ago · Juan Pablo Isaza Report

0

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

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!