使用自己的数据更新 BehaviorSubject

Updating BehaviorSubject using it's own data

我有以下代码:

summaries$: BehaviorSubject<IncidentSummary[]> = new BehaviorSubject(new Array<IncidentSummary>(0));

onSearchTextChanged(val: any) {
        this.summaries$.subscribe(data => this.summaries$.next(data.filter(summary => 
           summary.name.startsWith(val)
        || summary.type.startsWith(val))));
}

基本上我是根据搜索文本过滤 BehaviorSubject 的数据。问题是这段代码会导致无限循环。我尝试 unsubscribing 从没有帮助的订阅中。那么如何使用数据传递给BehaviorSubject.next

不订阅获取数据。您可以将完整的数据数组存储在自己的 属性 中,然后使用您根据完整数据和搜索文本计算出的新过滤数据调用 next