我需要使用ngrx/effect
向API发送一个put请求,但该请求需要id和内容,因此MongoDB可以找到帖子。
这是代码,我试图设置两个动作有效负载:
export class UpdatePost implements Action {
readonly type = UPDATE_POST
constructor(public payload: string & Post ) { }
}

效果如下:
@Effect()
editPost$: Observable<Action> = this.actions$
.ofType(PostActions.UPDATE_POST)
.map((action: PostActions.UpdatePost) => action.payload)
.switchMap((?) => {
return this.postService.editPost(id, post);
})
.map(editedpost => ({type: PostActions.UPDATE_POST_SUCCESS, payload: editedpost}))
}
&#13;
editPost()
需要两个参数:id和content。
我想我的动作有效负载应该设置为另一种方式,我是ngrx
的新手,所以欢迎提出建议。
答案 0 :(得分:3)
当您声明一个类型为string&amp;的变量时发布,这意味着这个变量拥有Post的所有方法和字符串的所有方法。这可能不是你想要的。 您希望您的操作具有标识符(类型为字符串)和帖子。您可以为此声明一个接口,或者您的操作可以具有多个属性,如:
export class UpdatePost implements Action {
readonly type = UPDATE_POST
constructor(public id: string, public payload: Post ) { }
}
那么在你的效果中你可以写:
@Effect()
editPost$: Observable<Action> = this.actions$
.ofType(PostActions.UPDATE_POST)
.switchMap(action => {
return this.postService.editPost(action.id, action.post);
})
.map(editedpost => ({type: PostActions.UPDATE_POST_SUCCESS, payload: editedpost}))
}