У меня небольшая проблема с этим кодом:
import { Injectable } from '@angular/core';
import { BehaviorSubject, Subject, merge } from 'rxjs';
import { scan, map } from 'rxjs/operators';
import { boatsList } from 'src/app/shared/mocks/boats.mock';
import { CatamaranModel } from 'src/app/shared/models/catamaran.model';
import { SailBoatModel } from 'src/app/shared/models/sail-boat.model';
@Injectable({
providedIn: 'root'
})
export class BoatListService {
private boatListInitSubject: BehaviorSubject<(CatamaranModel|SailBoatModel)[]> = new BehaviorSubject(boatsList);
boatListInit$ = this.boatListInitSubject.asObservable();
private addedBoatSubject: Subject<(CatamaranModel|SailBoatModel)> = new Subject();
addedBoat$ = this.addedBoatSubject.asObservable();
boatList$ = merge(
this.boatListInit$,
this.addedBoat$
)
.pipe(
scan((acc: (CatamaranModel|SailBoatModel)[], value: CatamaranModel|SailBoatModel) => [...acc, value])
);
constructor() {
}
addBoat(boat: CatamaranModel | SailBoatModel){
this.addedBoatSubject.next(boat);
}
}
Проблема в моем слиянии
boatList$ = merge(
this.boatListInit$,
this.addedBoat$
)
.pipe(
scan((acc: (CatamaranModel|SailBoatModel)[], value: CatamaranModel|SailBoatModel) => [...acc, value])
);
Я использую это слияние, чтобы иметь новый объект в моей коллекции, но объект в addedBoat $ никогда не добавляется в список, и я не знаю почему. Когда я делаю карту вместо сканирования, я не нахожу результат this.addedBoat $.
Если я подписываюсь на this.addedBoat $ и запускаю функцию addBoat, у меня есть хороший объект.
Могу ли я неправильно использовать слияние?