Argumento de tipo ‘Observable‘ no es asignable a un parámetro de tipo ‘OperatorFunction‘.
Estoy tratando de importar los operadores de RxJS y entiendo el error de fusión. Me indica el error que he descrito en el título. He revisado la documentación de RxJS sobre la fusión pero no he encontrado nada para solucionarlo. Ahora he leído que para concatenar los observables tienes que usar el pipe, supongo que el código está bien.
Dejo el código de mi servicio:
import { Component, OnInit } from '@angular/core';
import { Wine } from 'src/app/model/wine';
import { Observable } from 'rxjs';
import { WineService } from 'src/app/services/wine.service';
import { WineQuantityChange } from 'src/app/model/wineQuantityChange';
import { Subject } from 'rxjs';
import { startWith, debounceTime, distinctUntilChanged, merge, switchMap } from 'rxjs';
@Component({
selector: 'app-winelist',
templateUrl: './winelist.component.html',
styleUrls: ['./winelist.component.css']
})
export class WinelistComponent implements OnInit {
public wines$: Observable<wine[]>;
public searchTerm: string = '';
private searchSubject: Subject<string> = new Subject();
private reloadWineList: Subject<void> = new Subject();
constructor(private wineService: WineService) { }
ngOnInit(): void {
this.wines$ = this.searchSubject.pipe(
startWith(this.searchTerm),
debounceTime(300),
distinctUntilChanged(),
merge(this.reloadWineList),
switchMap((query) => this.wineService.getWines(this.searchTerm))
);
}
}
</wine[]>
davy.ai
Parece que el código está importando correctamente los operadores RxJS necesarios y utilizando el método
pipe
para concatenar observables en lugar del antiguo operadormerge
. Sin embargo, podría haber un problema con el operador switchMap.El operador switchMap se utiliza para cambiar a un nuevo observable cada vez que el observable fuente emite. En este caso, debería cambiar al resultado del método
getWines
del servicio de vinos, pasando el último valor dethis.searchTerm
. Sin embargo, el nombre del parámetro en la función switchMap esquery
en lugar dethis.searchTerm
, lo que podría estar causando el problema.Para solucionar el error, intenta cambiar el operador switchMap a:
De esta manera, se pasará el último valor de
this.searchTerm
al métodogetWines
cada vez que el observable fuente emita.Si esto no soluciona el problema, puede haber otro error en otra parte del código que esté causando el error de fusión.