web-dev-qa-db-fra.com

Angular 6 ng de peluchesLatest est obsolète

J'ai récemment mis à jour de Angular 5 à Angular 6.

Je reçois cet avertissement combineLatest is deprecated: resultSelector no longer supported, pipe to map instead. Rxjs est la version 6.1.0, tslint est la 5.10.0, la CLI Angular est la version 6.0.0 et TypeScript 2.7.2. Je l'utilise comme ceci:

const a$ = combineLatest(
  this.aStore.select(b.getAuth),
  this.cStore.select(b.getUrl),
  (auth, url) => ({auth, url}),
);

J'ai essayé aussi comme ça:

empty().pipe(
combineLatest(...),
  ...
)

Mais cela me donne: combineLatest is deprecated: Deprecated in favor of static combineLatest Et vide est également déconseillé en faveur de sa version statique.

17
Phaze

combineLatest est obsolète: resultSelector n'est plus pris en charge, conduit à la carte

L'avertissement ci-dessus recommande de supprimer resultSelector de la dernière fonction que vous avez fournie dans combineLatest observable et de la fournir comme élément de l'opérateur de carte, comme suit

const a$ = combineLatest(
  this.aStore.select(b.getAuth),
  this.cStore.select(b.getUrl)
);

const result$ = a$.pipe(
  map(results => ({auth: results[0], url: results[1]}))
)
45
Abinesh Devadas

Malheureusement, vous pourriez aussi avoir cette erreur tslint si vous importez combineLatest depuis des opérateurs:

import { combineLatest } from 'rxjs/operators';

combineLatest(...array);

au lieu de,

import { combineLatest } from 'rxjs';

combineLatest(...array);
7
Rui Marques

Pour l'erreur trailing comma, Supprimez la virgule après (auth, url) => ({auth, url})

const a$ = combineLatest(
  this.aStore.select(b.getAuth),
  this.cStore.select(b.getUrl),
  (auth, url) => ({auth, url}),  // Remove this comma.
);

Pour l'erreur missing import, Assurez-vous que vous avez importé toutes les variables ou classes externes que vous utilisez dans le fichier.

Exemple, dans ce cas, si vous n'avez pas importé combineLatest, importez-le

import { combineLatest } from 'rxjs'; // For RxJS 6.x

import { combineLatest } from 'rxjs/operators'; // For RxJS 5.x
1