Rxjs combineLatest已弃用,取而代之的是静态combineLatest

Rxjs combineLatest已弃用,取而代之的是静态combineLatest,rxjs,rxjs6,Rxjs,Rxjs6,在使用运行rxjs迁移工具之后 rxjs-5-to-6-migrate-p src/tsconfig.app.json 我现在得到了一个linting错误: CombineTest已弃用:弃用以支持静态 最合身的 以下是运行迁移命令之前的代码: this.store.combineLatest( this.store.select(lang.getCurrent), this.store.select(lang.getCurrentLocale) ).su

在使用运行rxjs迁移工具之后

rxjs-5-to-6-migrate-p src/tsconfig.app.json

我现在得到了一个linting错误:

CombineTest已弃用:弃用以支持静态 最合身的

以下是运行迁移命令之前的代码:

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;
    });
运行迁移命令后的我的代码:(当前显示一个linting错误)

这个问题是在stackoverflow问题中提出的,但不够具体:。

已弃用! 请参阅


我在这篇题为:(来源)的文章中找到了答案:

解决方案是转换:

import { combineLatest } from 'rxjs/operators';

a$.pipe(combineLatest(b$, c$));
进入:

rxjs版本6.4.0

您应该从RxJs操作符中导入映射操作符,使其工作

rxjs 6.5中的组合测试(a$,b$,c$).pipe(映射([a,b,c])=>treat(a,b,c))+
从'rxjs'导入{combinelatetest};
组合测试([a$,b$,c$);
对于大多数应用,将观察值数组映射到一个新值也是很有帮助的:

CombineTest([a$,b$,c$])。管道(
地图([a$,b$,c$])=>({
a:一美元,
b:b美元,
c:c$
}))
);

另请参见:

将相关测试与订阅者列表相结合:

combineLatest([aSubscriber, bSubscriber]).pipe(map((aRes, bRes)=>{
// your business logic
}));

或者,如果希望在管道中保留CombineTest,可以执行
a$.pipe(a$=>CombineTest(a$,b$,c$)该解决方案现在似乎也被弃用了。新方法是什么?我更新了答案。请让我们知道ofir fridman的答案是否过时。我使用的是rxjs版本6.5.3和idea ultimate 2020.1.2。并从“rxjs”导入CombineTest,而不是rxjs官方文档中建议的“rxjs/operators”,但intellij仍将其标记为不推荐使用。真烦人@ParrapbanzZ接受多个观测值的版本确实不受欢迎。您应该传入一个观察值数组。例如,
combinelatetest(a$,b$)
而不是
combinelatetest([a$,b$)
,虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。然而,这是这里最完整的答案。所有其他答案返回与预期类型不同的可观察类型,这要求应用此处理。它说的最少,但提供的最多。这会创建一个可观察的类型,而不是单一的组合类型。为什么要映射并返回一个对象,而它已经是一个流数组?
import { combineLatest } from 'rxjs';

combineLatest([a$, b$, c$]);
combineLatest([aSubscriber, bSubscriber]).pipe(map((aRes, bRes)=>{
// your business logic
}));