Rxjs v 6.*
Il a été simplifié avec la nouvelle version de rxjs.
1) Opérateurs
import {map} from 'rxjs/operators';
2) Autres
import {Observable,of, from } from 'rxjs';
Au lieu de chaînage, nous avons besoin de pipe. Par exemple
Ancienne syntaxe :
source.map().switchMap().subscribe()
Nouvelle syntaxe :
source.pipe(map(), switchMap()).subscribe()
Note : Certains opérateurs changent de nom en raison de collisions de noms avec des mots réservés JavaScript ! Il s'agit notamment de :
do
-> tap
,
catch
-> catchError
switch
-> switchAll
finally
-> finalize
Rxjs v 5.*
J'écris cette réponse en partie pour m'aider moi-même, car je ne cesse de consulter la documentation chaque fois que j'ai besoin d'importer un opérateur. Faites-moi savoir si quelque chose peut être mieux fait.
1) import { Rx } from 'rxjs/Rx'
;
Cela importe toute la bibliothèque. Vous n'avez donc pas à vous soucier du chargement de chaque opérateur. Mais vous devez ajouter Rx. J'espère que le tree-shaking optimisera et choisira uniquement les fonctions nécessaires (à vérifier). Comme mentionné dans les commentaires, le secouage des arbres ne peut pas aider. Ce n'est donc pas une solution optimisée.
public cache = new Rx.BehaviorSubject('');
Ou vous pouvez importer individuel opérateurs .
Cela optimisera votre application pour n'utiliser que ces fichiers. :
2) import { _______ } from 'rxjs/_________';
Cette syntaxe est généralement utilisée pour les objets principaux tels que Rx
lui-même ou Observable
etc,
Les mots-clés qui peuvent être importés avec cette syntaxe
Observable, Observer, BehaviorSubject, Subject, ReplaySubject
3) import 'rxjs/add/observable/__________';
Mise à jour pour Angular 5
avec Angular 5, qui utilise rxjs 5.5.2+.
import { empty } from 'rxjs/observable/empty';
import { concat} from 'rxjs/observable/concat';
Ils sont généralement accompagnés d'Observable directement. Par exemple
Observable.from()
Observable.of()
D'autres mots-clés de ce type peuvent être importés à l'aide de cette syntaxe :
concat, defer, empty, forkJoin, from, fromPromise, if, interval, merge, of,
range, throw, timer, using, zip
4) import 'rxjs/add/operator/_________';
Mise à jour pour Angular 5
avec Angular 5, qui utilise rxjs 5.5.2+.
import { filter } from 'rxjs/operators/filter';
import { map } from 'rxjs/operators/map';
Ils arrivent généralement dans le flux après la création de l'Observable. Comme flatMap
dans cet extrait de code :
Observable.of([1,2,3,4])
.flatMap(arr => Observable.from(arr));
D'autres mots-clés de ce type utilisent cette syntaxe :
audit, buffer, catch, combineAll, combineLatest, concat, count, debounce, delay,
distinct, do, every, expand, filter, finally, find , first, groupBy,
ignoreElements, isEmpty, last, let, map, max, merge, mergeMap, min, pluck,
publish, race, reduce, repeat, scan, skip, startWith, switch, switchMap, take,
takeUntil, throttle, timeout, toArray, toPromise, withLatestFrom, zip
FlatMap : flatMap
est un alias de mergeMap
Nous devons donc importer mergeMap
à utiliser flatMap
.
Note pour /add
importations :
Nous n'avons besoin d'importer qu'une seule fois dans tout le projet. Il est donc conseillé de le faire à un seul endroit. S'ils sont inclus dans plusieurs fichiers, et que l'un d'entre eux est supprimé, la construction échouera pour de mauvaises raisons.
2 votes
import {Observable} from 'rxjs/Observable';
importerait l'Observable, mais vous n'avez pas besoin de tout importer si vous utilisez des promesses...toPromise
fonctionne sans elle.0 votes
Qu'est-ce que je devrais importer par lui-même pour utiliser seulement
toPromise
? J'utilise Observable, j'aurais dû le préciser dans la question. Il s'agit en fait de deux questions distinctes.2 votes
Alors ceci fera l'affaire, si vous voulez des promesses
import 'rxjs/add/operator/toPromise';
Jetez un coup d'œil à angular.io/docs/ts/latest/tutorial/toh-pt6.html Cela devrait vous aider :)0 votes
Je vais m'en occuper. Santé et merci d'avoir pris le temps de partager !
0 votes
Pas de problème ! Bon codage ! :)
0 votes
Ce n'est plus correct pour rxjs 6+.
0 votes
Pouvez-vous préciser quelle partie est incorrecte, pour les autres visiteurs de cette page.
0 votes
Veuillez consulter ma réponse ci-dessous pour plus d'informations.