【发布时间】:2018-01-19 05:27:50
【问题描述】:
将 RxJS 与 Angular5 结合使用,我有一个包含数组的服务。 随着数组的填充,一些组件将被创建/销毁/重新创建。
所以我们有这样的服务:
@Injectable
export class MyService {
public events = [];
}
那么我们有一个像这样的组件:
@Inject(MyService)
@Component({})
export class MyComponent {
mySub: Subscriber
constructor(private ms: MyService){}
ngOnInit(){
this.mySub = Rx.Observable.from(this.ms.events).subscribe(v => {
});
}
}
我的问题是 - 如果 events 数组 aleady 中有元素,那么在创建组件时,它将获取所有现有元素,但是在创建订阅后添加到数组中的元素呢?事后如何监听元素何时添加到数组中?
如果我使用Subject,问题是我认为它不会存储历史项目,只会触发新项目。
【问题讨论】:
-
看起来这个问题很相似 -stackoverflow.com/questions/14466285/…
-
我认为我需要合并两个不同的 observables,但需要注意的是,在接收来自 Subject 的任何新事件之前,我需要读取数组中的所有现有项目。
-
想一想,我认为 ReplaySubject 是我正在寻找的,它将重新广播以前的值