【发布时间】:2019-02-08 19:18:31
【问题描述】:
以下是我在路线上定义的决心。
@Injectable({
providedIn: 'root'
})
export class CourseDetailResover implements Resolve<Observable<[Course, (Lesson[])]>> {
constructor(private coursesService: CoursesService) { }
resolve(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<[Course, (Lesson[])]> {
return this.coursesService.findCourseByUrl(route.params['id'])
.pipe(
tap(data => console.log(data)),
switchMap(
course => this.coursesService.findLessonsForCourse(course.id)
.pipe(
tap(data => console.log(data)),
map<Lesson[], [Course, Lesson[]]>(lessons => [course, lessons]),
tap(data => console.log(data))
)
)
);
}
}
我的路线是
{
path: 'course/:id',
component: CourseDetailComponent,
resolve: {
detail:CourseDetailResover
}
}
我发现即使正在调用解析器,但实际上从未调用过下面的组件 ngOnInit
export class CourseDetailComponent implements OnInit {
course$: Observable<Course>;
lessons$:Observable<Lesson[]>;
constructor(private route: ActivatedRoute) {}
ngOnInit(): void {
console.log('inside here');
this.course$ = this.route.data.pipe(map(data => data['detail'][0]));
this.lessons$ = this.route.data.pipe(map(data => data['detail'][1]));
}
}
在路线上启用跟踪时,我可以看到以下内容。
Router Event: ResolveStart
但是,跟踪日志中没有 Router Event: ResolveEnd。
这可能是什么问题?
【问题讨论】:
标签: angular firebase rxjs angular6