如何正确地从ngrx商店推送和接收数据

时间:2017-05-14 15:00:47

标签: angular ngrx ngrx-store

我试图与ngrx商店合作并面临问题,在我的商店中正确推送数据并选择它。

我的商店对象看起来像

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

我的减速器看起来像

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

以及#34; ADD_MESSSAGE"我想从动作有效负载推送新的消息对象并返回新状态。我究竟做错了什么?现在我的状态聊天消息数组只是在每次推送新消息时重写一个值,但旧消息不是保存。

写入商店后,如何选择我的消息状态?是否有必要订阅数据?我试过this.store.select('chat')但是如何获取消息?

2 个答案:

答案 0 :(得分:1)

这是我接近它的方式,

  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())
}

答案 1 :(得分:0)

我能够在没有覆盖的情况下添加它:

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

如果您想要提取您可以执行的消息:

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