首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ngrx/effects中传递params (action.payload)服务?

如何在ngrx/effects中传递params (action.payload)服务?
EN

Stack Overflow用户
提问于 2018-09-23 12:36:51
回答 1查看 10.8K关注 0票数 11

我刚接触过ngrx-6。该效果将侦听操作"LOAD_COURSE_DETAILS“,并应调用course_id (action.payload)服务。但我搞错了

属性“toFixed”在“Action”类型中缺失。

但是,如果我执行console.log,我可以看到数据从组件传递到效果。

如何将参数传递给服务?

提前谢谢。

文件:效果

代码语言:javascript
复制
@Effect()
loadCourseDetails$ = this.actions$.pipe(
  ofType(CourseActionTypes.LOAD_COURSE_DETAILS),
  switchMap((action) => {
    console.log('in course effects', action);
    return this.courseService.getCourseDetails(action).pipe(
      map((data) => new fromCourse.LoadCourseDetailsSuccess(data))
    );
  })
);

文件: actions.ts (我的操作定义了有效负载)

代码语言:javascript
复制
export class LoadCourseDetails implements Action {
  readonly type = CourseActionTypes.LOAD_COURSE_DETAILS;
  constructor(public payload: Number) {}
}
export class LoadCourseDetailsSuccess implements Action {
  readonly type = CourseActionTypes.LOAD_COURSE_DETAILS_SUCCESS;
  constructor(public payload: ICourse) {}
}

文件: component.ts (调度操作)

代码语言:javascript
复制
loadCourseDetails(id: Number) {
  console.log('dispatch course id', id);
  this.store.dispatch(new fromCourse.LoadCourseDetails(id));
}

文件: service.ts (由effeccts调用)

代码语言:javascript
复制
getCourseDetails(courseId: Number) {
    return this.http.get(`url/${courseId}.json`);
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-23 12:51:22

您必须使用来自payloadaction。为了做到这一点,您必须填写ofType函数的泛型。

现在,switchMap内部的操作足够聪明,可以知道它是一个LoadCourseDetails操作,因此也将知道有效负载类型。

代码语言:javascript
复制
@Effect()
loadCourseDetails$ = this.actions$.pipe(
  ofType<LoadCourseDetails>(CourseActionTypes.LOAD_COURSE_DETAILS),
  switchMap((action) => {
    console.log('in course effects', action);
    return this.courseService.getCourseDetails(action.payload).pipe(
      map((data) => new fromCourse.LoadCourseDetailsSuccess(data))
    );
  })
);

要获得更多的效果用法,请查看为此开始使用ngrx/effects

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52466165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档