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