obtenha um item único do ngrx / store

Escrevi o redutor a seguir para armazenar os itens de estado no meu aplicativo Angular 2. Os itens são ofertas de preço para instrumentos financeiros (por exemplo, ações / moedas).

A implementação do meu redutor é a seguinte:

export const offersStore = (state = new Array<Offer>(), action:Action) => {
switch(action.type){

    case "Insert":
        return [
            ...state, action.payload
        ];
    case "Update":
            return state.map(offer => {
                    if(offer.Instrument === action.payload.Instrument)
                    {
                        return Object.assign({}, action.payload);
                    }
                    else return offer;
            });
    case "Delete":
        return state.filter(offer => offer.Instrument !== action.payload )
    default:
        return state;
    }

}

Consegui fazer com que as inserções, atualizações e exclusões funcionassem - embora não fosse fácil. Acho o Redux uma espécie de mudança de paradigma em relação à minha codificação há anos.

Eu tenho um componente / página de instrumento no meu aplicativo - que mostra todas as informações disponíveis para um instrumento específico, indicado por InstrumentId, por exemplo. "EUR / USD" (armazenado na propriedade payload.Instrument).

Meu problema é que não tenho certeza de como procurar com eficiência um instrumento específico e retirá-lo da loja. Não apenas isso, mas também quero que o instrumento que eu busco seja atualizado se o Instrumento na loja for atualizado, pois é frequentemente via push do Websocket no servidor. Então, eu realmente preciso pesquisar na loja por um instrumento específico e devolvê-lo como um Observável, que continuará a atualizar o View Component com base nos novos dados enviados à loja.

Como posso conseguir isso?

questionAnswers(2)

yourAnswerToTheQuestion