obtenir seul élément de ngrx/magasin

J'ai écrit la suite de réducteur pour stocker l'état des éléments dans mon Angulaire 2 app. Les Éléments sont des offres de prix pour les Instruments Financiers (par exemple les stocks de devises).

Mon Réducteur de mise en Œuvre est comme suit:

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;
    }

}

J'ai réussi à obtenir des Insertions, des Mises à jour et Suppressions de travail - même si ce n'était pas facile. Je trouve Redux être quelque chose d'un changement de paradigme de la façon dont j'ai été codant pour des années.

J'ai un Instrument Composant/Page sur mon App qui montre toutes les informations disponibles pour un Instrument en particulier, indiqué par InstrumentId par exemple "EUR/USD" (stockée dans la charge utile.Instrument de la propriété).

Mon problème est que je ne suis pas sûr de savoir comment chercher efficacement un instrument spécifique et la saisir à partir de la boutique. Non seulement cela, mais je veux aussi l'instrument que j'ai récupérer pour être mis à jour si l'Instrument dans le magasin est mis à jour car ils sont fréquemment via websocket pousser à partir du serveur. Donc j'ai vraiment besoin de rechercher le magasin pour un instrument spécifique, et de le retourner comme un fait Observable, qui continuera à mettre à jour la Vue de Composant en fonction de nouvelles données qui est poussé vers le magasin.

Comment puis-je y parvenir?

Je rencontre beaucoup de la même question quand j'ai commencé à travailler avec redux/ngrxStore. J'ai pris lourds de l'inspiration à partir de la ngrx exemple d'application. github.com/ngrx/example-app Si vous regardez la façon dont ils composent leur état et de récupérer les valeurs qu'il peut aider. Avec Redux, il est conseillé pour vous de normaliser vos états semblables à des tables de base de données. Mon deuxième problème a été d'apprendre à utiliser efficacement les phénomènes observables et rxjs. Lorsque bien fait que vous pouvez vraiment vous simplifier votre code et de le rendre très lisible (en supposant que vous comprenez les rxjs opérateurs) et votre application très rapide et vérifiable.
Ces réagir/redux exemples porté sur l'utilisation ngrx/magasin pourrait aider un peu aussi. github.com/btroncone/ngrx-examples
Ils sont essentiellement de construire des indices de contre l'état. const newBookEntities = newBooks.réduire((entités: { [id: string]: Livre }, livre: Livre) => { Objet de retour.attribuer(entités, { [livre.id]: livre }); }, {});
Et puis utiliser cette carte d'identité pour entrer directement à l'objet. état$ .sélectionnez(s => s.les entités[id]);
A cette aide?

OriginalL'auteur reach4thelasers | 2016-08-15