J'ai reçu le message d'erreur suivant lorsque j'essaie d'appliquer l'opérateur switchMap à mon observable:
La propriété 'switchMap' n'existe pas sur le type 'Observable'.
J'utilise actuellement rxjs version 5.5.2, et dans mon composant, je l'ai importé comme ceci:
import 'rxjs/operator/switchMap';
Cependant, je reçois toujours une erreur de compilation. J'ai examiné des questions similaires et je n'ai pas trouvé de solution appropriée à cela, des suggestions sur ce qui pourrait être le problème ici?
get appUser$() : Observable<AppUser> {
return this.user$
.switchMap(user => {
if (user) return this.userService.get(user.uid);
return Observable.of(null);
});
}
Vous devez importer à partir de rxjs/add/operator/switchMap
si vous utilisez l'ancien style d'opérateur "patch":
import 'rxjs/add/operator/switchMap';
Depuis RxJS 5.5 avec les opérateurs "pipable", vous devez importer de 'rxjs/operators'
:
import { switchMap } from 'rxjs/operators';
Je suppose que vous utilisez Angular 6, ce qui signifie que vous utilisez la dernière version de RxJS. Vous devez diriger vos opérateurs comme
obs$.switchMap(() => { do stuff... });
changer pour
obs$.pipe(switchMap(() => { do stuff... }));
Edit: gardez à l'esprit que dans votre cas, votre observable est retourné par this.refreshToken
this.refreshToken().pipe(switchMap(() => { do stuff... }));
Je pense que si vous utilisez Angular 6 alors vous devez utiliser pipe
Version inférieure à angular 6, le code ci-dessous fonctionnera
this.route.params.switchMap((data: Passengers) =>
this.passengerService.getPassenger(data.id))
.subscribe((data: Passengers) => this.passenger = data);
Mais pour In Angular 6, vous devez diriger vos opérateurs
this.route.params.pipe(switchMap((data: Passengers) =>
this.passengerService.getPassenger(data.id)))
.subscribe((data: Passengers) => this.passenger = data);