NGRX 上的多个负载 action/effect
Multiple payload on NGRX action/effect
我需要使用 ngrx/effect
向 API 发送一个放置请求,但该请求需要 ID 和内容,因此 MongoDB 可以找到 post。
这是代码,我尝试设置两个动作负载:
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}))
}
editPost()
需要两个参数:id和content。
我想我的动作有效负载应该设置为另一种方式,我是 ngrx
的新手,所以欢迎大家提出建议。
当你声明一个类型为string & Post的变量时,意味着这个变量拥有Post的所有方法和string的所有方法。那可能不是你想要的。
您希望您的操作有一个标识符(字符串类型)和一个 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}))
}
我需要使用 ngrx/effect
向 API 发送一个放置请求,但该请求需要 ID 和内容,因此 MongoDB 可以找到 post。
这是代码,我尝试设置两个动作负载:
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}))
}
editPost()
需要两个参数:id和content。
我想我的动作有效负载应该设置为另一种方式,我是 ngrx
的新手,所以欢迎大家提出建议。
当你声明一个类型为string & Post的变量时,意味着这个变量拥有Post的所有方法和string的所有方法。那可能不是你想要的。 您希望您的操作有一个标识符(字符串类型)和一个 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}))
}