подписка в 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[]>();

к какому значению он относиться? или методу? за чем он конкретно наблюдает?


Ответы (0 шт):