我正在尝试将两个观察点的数据映射到第三个观察点,如下所示
return this.coursesService
.findCourseByUrl(route.params['id'])
.pipe(
switchMap((course: Course) =>
this.coursesService
.findLessonsForCourse(course.id)
.pipe(map((lessons: Lesson[])=> [course, lessons)])
)
);但是我得到了以下异常
Type 'Observable<(Course | Lesson[])[]>' is not assignable to type 'Observable<[Course, Lesson[]]>'.
Type '(Course | Lesson[])[]' is not assignable to type '[Course, Lesson[]]'.
Property '0' is missing in type '(Course | Lesson[])[]'.我发现switchMap中的resultSelector在rxJs6中被弃用,这就是我尝试这种方法的原因。但却被困在这里。
发布于 2018-08-25 18:54:04
想出了以下两种方法,但不确定第二种解决方案。
第一个解决方案:在映射最终的可观察对象时显式添加类型。
return this.coursesService
.findCourseByUrl(route.params['id'])
.pipe(
switchMap((course: Course) =>
this.coursesService
.findLessonsForCourse(course.id)
.pipe(map(lessons => [course, lessons] as [Course, Lesson[]])),
),
);第二种解决方案
return this.coursesService
.findCourseByUrl(route.params['id'])
.pipe(
switchMap((course: Course) =>
this.coursesService
.findLessonsForCourse(course.id)
.pipe(merge(lessons => [course, lessons])),
),
);https://stackoverflow.com/questions/52016268
复制相似问题