подписка в Angular
Не могу разобраться как работает подписка в Angular2+
у меня есть сервис, который в панели, в верху приложения должен выводить счетчики товаров, в корзине и на сравнении.
Сервис
export class SideBarService {
apiUrl = environment.apiUrl;
private count = new Subject<number[]>();
readonly $count = this.count.asObservable();
constructor(private http: HttpClient) { }
getStorageItemLenght(): number {
const storageItem = localStorage.getItem('comparisonProductId');
if (storageItem) {
const result = JSON.parse(storageItem);
return result.getLenght;
}
return 0;
}
getBasketItemLenght(): number {
let request = 0;
this.http.get<number>(this.apiUrl + '/api/v1/Basket/GetCount').subscribe(res => {
request = res;
});
return request;
}
}
я пытаюсь получить значения при загрузке приложения, а также с последующей подпиской на их изменения.
В Компоненте
ngOnInit() {
// Получаем количество товаров в сравнении при загрузке APP
this.comparisonItemCount = this.sidebarService.getStorageItemLenght();
// Подписываемся на количество товаров в сравнении при изменении значения
this.sidebarService.$count.subscribe(response => {
this.comparisonItemCount = this.sidebarService.getStorageItemLenght();
}, error => {
this.error = this.toastr.error('Ошибка связи с сервером!', 'Ошибка', { timeOut: 3000 });
console.log('error: ' + JSON.stringify(error));
});
// Получаем количество товаров в сравнении при загрузке APP
this.bascketCount = this.sidebarService.getBasketItemLenght();
// Подписываемся на количество товаров в корзине?
this.sidebarService.$count.subscribe(resp => {
this.bascketCount = this.sidebarService.getBasketItemLenght();
});
}
Также не могу понять что представляет из себя
private count = new Subject<number[]>();
к какому значению он относиться? или методу? за чем он конкретно наблюдает?