8

Angular 6 需要对 RxJs 6 进行更新,并且随着 RxJs 更新,该Observable.publish()功能消失了。我找到了一个publish操作员,RxJs/operators但我无法弄清楚如何使用它。

如何重写此 RxJs 5 代码以与 RxJs 6 一起使用?

const myConnectableObservable = this.getObservable().publish()

4

2 回答 2

10
import { ConnectableObservable } from "rxjs"
import { publish } from "rxjs/operators";

const myConnectableObservable: ConnectableObservable<MyClass> = myService.getObservable().pipe(publish()) as ConnectableObservable<MyClass>;

特别感谢@cartant

于 2018-05-16T15:07:40.833 回答
0

您也可以尝试此版本,而无需强制转换为ConnectableObservable类型。这样你就不需要导入和转换。 这是必需的,因为根据文档pipe()总是返回 Observable。

import { interval } from 'rxjs';
import { filter, publish } from 'rxjs/operators';

const source = interval(400);

const observable = publish()(source.pipe(
  filter(x => x % 2 === 0),
));

observable.connect();

最初作为问题发布在 RxJS GitHub 存储库上,请参阅问题链接

于 2019-07-15T08:34:57.110 回答