【发布时间】:2018-06-23 14:45:18
【问题描述】:
我有一个过滤器数组作为Observable,我想从中添加/删除过滤器。这是我目前仅在函数第一次运行时添加Filter 的代码。
第二次什么都没发生。
private _filters$ = new BehaviorSubject<Filter[]>([]);
addFilter(added: Filter) {
debugger
// adding to array of filters
this._filters$.pipe(
tap(d => { debugger; }),
first(),
map(filters => ([...filters, added]))
).subscribe(this._filters$);
}
所以我的问题是:为什么会发生这种情况?为什么它只运行一次? (顺便说一下first() 不是原因)。
我知道我可以让代码像这样工作:
private _filters$ = new BehaviorSubject<Filter[]>([]);
currentFilters;
init() {
this._filters$.subscribe(f => this.currentFilters = f);
}
addFilter(added: Filter) {
this._filters$.next([...this.currentFilters, added]);
}
【问题讨论】: