2017-05-14 6 views
1

Ich versuche, mit Ngrx Store arbeitet und mit Problem konfrontiert, um Daten in meinem Speicher richtig zu pushen und wählen Sie es aus.Wie zu pushen und Daten von Ngrx Store zu empfangen

Mein Speicher Objekt aussehen

AppStore = { 
    chat: { 
    messages: [] 
    } 
} 

und meine Reduzierungen sieht aus wie

const initialState = { 
    messages: [] 
}; 

export const ChatReduce = (state = initialState, action:Action) => { 
    if (typeof state === 'undefined') { 
    return initialState; 
    } 
    switch(action.type){ 
    case 'ADD_MESSAGE': 
     return { 
     ...state, 
     messages: [...state.messages, action.payload] 
     }; 
    default: 
     return state; 
    } 
}; 

im Fall „ADD_MESSSAGE“ Ich Objekt neue Nachricht von Aktion Nutzlast drücken wollen und neuen Zustand zurück. Was mache ich falsch? Momentan schreibt das Chat-Nachrichten-Array meines Zustandes jedes Mal, wenn ich eine neue Nachricht drücke, nur einen Wert um, aber alte Nachrichten werden nicht gespeichert.

Und nach dem Schreiben in den Speicher, wie Nachrichten von mir Zustand auswählen? Ist es notwendig, Daten zu abonnieren? Ich versuchte this.store.select('chat'), aber wie man Nachrichten erhält?

Antwort

0

Ich konnte es erhalten, ohne hinzuzufügen, überschreiben:

https://jsfiddle.net/seesyong/stL5o0ck/

Wenn Sie möchten, dass Sie nur die Nachrichten ziehen tun könnte:

this.store.select(state => state.chat) 
    .subscribe(chat => { 
    console.log(chat.messages); 
}); 
1

Heres, wie ich es angegangen,

ngOnInit() { 
    this.getStudents(); 
    this.students$ = this.store.select(state => state.students) 
    this.students$.forEach(v => console.log(v)) 
    } 

    getStudents(){ 
    // we want to dispatch na action 
    this.store.dispatch(new studentActions.LoadStudentsAction()) 
} 
Verwandte Themen