1

我正在尝试使用 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;
  }
};

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

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

4

2 回答 2

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())
}
于 2018-02-09T18:36:25.723 回答
0

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

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

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

this.store.select(state => state.chat)
  .subscribe(chat => {
  console.log(chat.messages);
});
于 2017-06-28T02:32:24.663 回答