web-dev-qa-db-ja.com

Angular 6 ng lint composeLatestは非推奨です

最近、Angular 5からAngular 6に更新しました。

この警告combineLatest is deprecated: resultSelector no longer supported, pipe to map insteadを受け取っています。 Rxjsはバージョン6.1.0、tslintは5.10.0、Angular CLIは6.0.0、TypeScript 2.7.2です。私はこれを次のように使用しています:

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

私もこれを試しました:

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

しかし、これは私に与えます:combineLatest is deprecated: Deprecated in favor of static combineLatestとemptyは、その静的バージョンを支持して廃止されました。

17
Phaze

composeLatestは非推奨です:resultSelectorはサポートされなくなり、代わりにパイプでマップします

上記の警告は、combineLatest observableで最後に提供したresultSelector関数を削除し、次のようにマップ演算子の一部として提供することを推奨しています。

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

残念ながら、combinateLatestを演算子からインポートすると、tslintエラーが発生する場合があります。

import { combineLatest } from 'rxjs/operators';

combineLatest(...array);

の代わりに、

import { combineLatest } from 'rxjs';

combineLatest(...array);
7
Rui Marques

trailing commaエラーの場合、(auth, url) => ({auth, url})の後のコンマを削除します

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

missing importエラーの場合、ファイルで使用しているすべての外部変数またはクラスのインポートがあることを確認してください。

例、この場合、combineLatestをインポートしていない場合はインポートします

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

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