Angular NgRx调度了一个无效的操作
这里的问题主要是因为ofType()。我有一个简单的操作,用户分派一个类型,然后请求被发送到后端,作为响应,它将返回一个对象数组,该数组将作为新分派的操作传递。问题是,对于新版本的ngrx,无法指定actions$的ofType(),因为首先我们需要使用pipe(),所以映射不会在一种类型中处理 以下是我的实现:Angular NgRx调度了一个无效的操作,angular,typescript,ngrx,ngrx-effects,Angular,Typescript,Ngrx,Ngrx Effects,这里的问题主要是因为ofType()。我有一个简单的操作,用户分派一个类型,然后请求被发送到后端,作为响应,它将返回一个对象数组,该数组将作为新分派的操作传递。问题是,对于新版本的ngrx,无法指定actions$的ofType(),因为首先我们需要使用pipe(),所以映射不会在一种类型中处理 以下是我的实现: @Effect() getGrades = this.actions$ .pipe( ofType(StudentActions.TRY_SET_SUBJE
@Effect()
getGrades = this.actions$
.pipe(
ofType(StudentActions.TRY_SET_SUBJECTS),
mergeMap((action: StudentActions.TrySetSubjects) => {
const id = action.payload.id;
return this.httpClient.get(`http://localhost:8080/api/v1/student/${id}/grades`)
}),
map((response: any[]) => {
console.log('StudentEffects -> getGrades')
const subjects: Subject[] = response
return [
new StudentActions.SetSubjects(subjects)
]
})
);
以下是它如何与以前的版本配合使用:
@Effect()
getGrades = this.actions$
.ofType(StudentActions.TRY_SET_SUBJECTS)
.pipe(
mergeMap((action: StudentActions.TrySetSubjects) => {
const id = action.payload.id;
return this.httpClient.get(`http://localhost:8080/api/v1/student/${id}/grades`)
}),
map((response: any[]) => {
console.log('StudentEffects -> getGrades')
const subjects: Subject[] = response
return [
new StudentActions.SetSubjects(subjects)
]
})
);
如何处理响应和发送新的学生活动。使用新版本设置主题(受试者)
任何提示都会有帮助,提前谢谢你
编辑
实际上地图有问题。首先,我使用了mergeMap,然后使用了justmap。我把它改成了mergeMap和concatMap。不确定concatMap是否是一个不错的选择,但它会等到上一次订阅结束,所以听起来是个不错的选择。一切正常。这就是你要找的吗
您的实现是正确的<类型的代码>仍将能够检测到正确的操作类型。到底是什么不按预期工作?在新的学员活动返回之前,一切都很好。设置科目(科目)。它将抛出无效的操作异常,但如果效果仅包含一个映射,则将成功返回。