Angular NgRx调度了一个无效的操作

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

这里的问题主要是因为ofType()。我有一个简单的操作,用户分派一个类型,然后请求被发送到后端,作为响应,它将返回一个对象数组,该数组将作为新分派的操作传递。问题是,对于新版本的ngrx,无法指定actions$的ofType(),因为首先我们需要使用pipe(),所以映射不会在一种类型中处理

以下是我的实现:

@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是否是一个不错的选择,但它会等到上一次订阅结束,所以听起来是个不错的选择。一切正常。

这就是你要找的吗


您的实现是正确的<类型的代码>仍将能够检测到正确的操作类型。到底是什么不按预期工作?在新的学员活动返回之前,一切都很好。设置科目(科目)。它将抛出无效的操作异常,但如果效果仅包含一个映射,则将成功返回。