我正在尝试将数据从两个可观察对象映射到第三个类似对象
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[])[]'.
我发现rxJs6中不推荐使用switchMap中的resultSelector,这就是我尝试这种方法的原因。但是被困在这里。
答案 0 :(得分:0)
想出了以下两种方法,尽管不确定第二种解决方案。
第一个解决方案:在映射最终的可观察对象时显式添加了类型。
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])),
),
);