我在Angular中有一个父组件,它创建一个源自API调用的ReplaySubject。随着过滤器的更改以及对新数据的新调用,这会随着时间而变化。此主题将传递给子组件,以便他们可以处理数据并在过滤器更改并发出新数据时保持更新。
// ParentComponent
public tasksList = new ReplaySubject(1);
queryParams.switchMap(params => apiCall(params)).subscribe(tasks => tasksList.next(tasks));
// ParentComponent template
<task-list [tasks$]="tasksList"></task-list>
// TaskListComponent
tasksSub = tasks$.subscribe();
ngOnDestroy() { tasksSub.unsubscribe(); }
我遇到的问题是,当其中一个子组件被销毁并取消订阅主题时,它会完成主题并且新组件无法订阅。如何分享主题并保持可重玩性,同时还能破坏子组件?