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.
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]}))
)
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);
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