在使用ngrx / store的Angular2应用程序中,我有一个方法可以从API查询一些数据并将其发送到商店。它工作正常:
get(id: number) {
return this.http.get(`http://localhost:3000/contents/${id}.json`).map( response => {
return response.json();
})
.map( (content: Content) => {
this.store.dispatch({ type: 'GET_CONTENT', payload: content });
return content;
});
}
我还有另一个查询API的服务,它返回一个数组os对象。在这种情况下,我这样做:
return this.http.get(`http://localhost:3000/contents/${id}/contents.json`).map( response => {
return response.json();
})
.map( ( contents: Array<Content>) => {
contents.map( payload => {
this.store.dispatch({ type: 'GET_CONTENT', payload });
});
return contents;
})
它可以工作,但商店的状态会多次改变。有更好的方法吗?也许同时在商店中创建另一个动作(&#39; GET_CONTENTS&#39;)?或者我可以说,不知何故,只有在&#39; contents.map&#39;之后才能更改状态。结束?
答案 0 :(得分:2)
一个简单的解决方案是编辑您的reducer以期望Array<Content>
有效负载。然后,如果单个Content
只是在数组中调度该值:
this.store.dispatch({ type: 'GET_CONTENT', [content] });