Rxjs combineLatest已弃用,取而代之的是静态combineLatest
在使用运行rxjs迁移工具之后 rxjs-5-to-6-migrate-p src/tsconfig.app.json 我现在得到了一个linting错误: CombineTest已弃用:弃用以支持静态 最合身的 以下是运行迁移命令之前的代码: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
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
}));