КомбинацияLatest устарела в пользу статического combLatest
После запуска утилиты миграции rxjs, используя
rxjs-5-to-6-migrate -p src/tsconfig.app.json
Теперь я получаю ошибку:
КомпонентLalest устарел: устарел в пользу статического combLatest.
Вот мой код перед запуском команды миграции:
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;
});
Мой код после запуска команды миграции: (в настоящее время отображается ошибка перебора)
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;
});
Вопрос задавался в этих вопросах stackoverflow, но он не был достаточно конкретным: угловые 6 ng lint дублируют ошибки и предупреждения, combLatest устарел.
Ответы
Ответ 1
В этой статье я нашел ответ: RxJS 6: Что нового и что изменилось? (который прибывает из официальных документов):
Решение состоит в том, чтобы преобразовать:
import { combineLatest } from 'rxjs/operators';
a$.pipe(combineLatest(b$, c$));
в:
import { combineLatest } from 'rxjs';
combineLatest(a$, b$, c$);
Ответ 2
rxjs версия 6.4.0
и вы должны импортировать оператор карты из операторов RxJs, и это будет работать
combineLatest(a$, b$, c$).pipe(map([a, b, c]) => treat(a, b, c))
Ответ 3
В rxjs 6.5
import { combineLatest } from 'rxjs';
combineLatest([a$, b$, c$])