Search code examples
rxjsrxjs6

combineLatest deprecated in favor of static combineLatest


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 .


Solution

  • Deprecated!

    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$]);