У меня есть массив фильтров как 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]);
}