2017-12-22 18 views
0

각도 응용 프로그램을 구축 중이며 RxJ를 이해하는 데 문제가 있으며 문제를 해결하는 데 사용하는 방법이 있습니다.RxJs - 배열의 특정 항목을 구독하십시오.

나는 또한 항목에 대한 데이터 저장소를 가지고,이 전 유형 항목

export class TemplateComponent { 

    private item1: Item; 
    private item2: Item; 

    constructor(private store: ItemStore) { 

    } 
} 

및 Item 클래스

export class Item { 
    name: string; 
    value: string; 
} 

당신이 볼 수있는 2 개 개체를 필요로하는 구성 요소가 있다고 가정 해 봅시다

export class ItemStore { 
    public subscribedItems: Item[]; 

    constructor(private httpService: ItemHttpService) { 

    } 

    public getSubscribedItems() { 
     this.httpService.getItems(this.subscribedItems) 
      .subscribe(response => { 
       this.subscriberItems = response; 
      } 
    } 
} 

ItemStore에는 항목을 가져 오기 위해 API를 호출하는 서비스가 삽입되어 있습니다.

아이디어는 API에서 업데이트해야하는 가입 된 항목의 목록을 가지므로 항목에 바인딩해야하는 각 구성 요소는 항목을 subscribedItems 배열에 추가 할 수 있으며 저장소는 새 항목을 API를 지속적으로 사용합니다. 항목은 실제로 센서 데이터이므로 값은 시간에 따라 변할 수 있지만 이름은 동일하게 유지됩니다

내 TemplateComponent가 item1 및 item2에서만 변경 사항을 구독하고 나머지 항목은 신경 쓰지 않아도되는 스마트 솔루션이 있습니까? 또는 subscribedItems 배열에 가입 한 다음 item1 및 item2에 대한 새 값을 가져 오는 동안 내 방법을 필터링해야합니까?

+0

기본적으로, 내가 이해했는지 보도록하겠습니다. 주기적으로 업데이트를받을 항목 목록을 갖고 특정 구성 요소에서 업데이트를 받고 싶습니다. 배열의 2 번과 4 번 항목을 가정 해 봅시다. 나머지 항목은 어떻게됩니까? 그들은 다른 구성 요소에 의해 "요청"되지 않고도 업데이트를 받게됩니까? 또는 구성 요소가 구성 요소를 요청할 때만 업데이트를 받고 싶습니까? –

+0

"열린"구성 요소에서 현재 사용중인 항목 만 요청해야하며, 구성 요소를 삭제할 때 열려있는 다른 구성 요소도 감시하지 않으면 해당 항목의 구독을 완료해야합니다. –

답변

0

문제를 해결하려면 WebSocket 기술을 사용해야합니다. 이 작업을 수행하는 방법에 대한 좋은 예가 여기에 설명되어 있습니다. Angular WS

+0

예, WebSockets은 절대적으로 내가 사용할 기술입니다. WebSocket이 서버에서 클라이언트로 데이터를 가져 오는 것과 서비스와 데이터 저장소를 단순화하는 것과 관련하여 개선점이 있지만 배열의 특정 항목을 구독하는 데 도움이되는 방법을 알지 못합니다. 답변을 확대 할 수 있습니까? –