最近、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は、その静的バージョンを支持して廃止されました。
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]}))
)
残念ながら、combinateLatestを演算子からインポートすると、tslintエラーが発生する場合があります。
import { combineLatest } from 'rxjs/operators';
combineLatest(...array);
の代わりに、
import { combineLatest } from 'rxjs';
combineLatest(...array);
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