After running the rxjs migration tool using
rxjs-5-to-6-migrate -p src/tsconfig.app.json
I'm now getting a linting error:
combineLatest is deprecated: Deprecated in favor of static combineLatest.
Here is my code before running the migration command:
this.store.combineLatest( this.store.select(lang.getCurrent), this.store.select(lang.getCurrentLocale) ).subscribe(([state, currentLang, locale]) => { this._language = session.language === currentLang ? '' : currentLang; this._locale = session.locale === locale ? '' : locale; });
My code after running the migration command: (currently presenting a linting error)
import {map, combineLatest} from 'rxjs/operators'; this.store.combineLatest( this.store.select(lang.getCurrent), this.store.select(lang.getCurrentLocale) ).subscribe(([state, currentLang, locale]) => { this._language = session.language === currentLang ? '' : currentLang; this._locale = session.locale === locale ? '' : locale; });
The question was asked in this stackoverflow questions, but it was not specific enough: Angular 6 ng lint duplicate errors and warnings, combineLatest is deprecated .
If at least one Observable was passed to combineLatest and all passed Observables emitted something, resulting Observable will complete when all combined streams complete.
forkJoin - When all observables complete, emit the last emitted value from each. combineLatest - When any observable emits a value, emit the latest value from each.
When combineLatest subscribes to its sources, it prefetches 128 elements by default from them. This means that your first source will run to completion synchronously and the second subscription doesn't even happen until that completion.
import { combineLatest } from 'rxjs'; combineLatest([a$, b$, c$]);
And for most applications it's helpful to map the array of observables to a new value as well:
combineLatest([a$, b$, c$]).pipe( map(([a$, b$, c$]) => ({ a: a$, b: b$, c: c$ })) );
Also see: https://www.learnrxjs.io/learn-rxjs/operators/combination/combinelatest
Please refer to ofir fridman's answer for the correct syntaxs as of RxJs 6.5
I found an answer in this article titled: RxJS 6: What's new and what has changed? ( which comes from official docs):
The solution is to convert:
import { combineLatest } from 'rxjs/operators'; a$.pipe(combineLatest(b$, c$));
into:
import { combineLatest } from 'rxjs'; combineLatest([a$, b$, c$]);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With