我在做什么:
我的路线上有一个有角度的决心守卫/work/:slug
。我想立即使用本地数据的 Observable 解决该守卫,同时通过网络获取远程数据。网络请求成功后,将本地数据替换为远程。
笔记:
- 我的本地数据
tombstoneDefault.data
只是一个 javascript 数组。 - 我使用 Observable.from() 来包装我的本地数据。
- 我的网络请求
this.someService.getData()
将返回一个 Observable。
问题,我如何链接[Observable.from][1]
我的研究导致我使用switchMap或者我如何使用 RXJS 中的不同运算符来完成这个?
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve } from '@angular/router';
import { POST_TABLE as tombstoneDefault } from './work-post.content';
import { Observable } from '[rxjs][1]/Observable';
@Injectable()
export class WorkPostResolve implements Resolve<any> {
constructor() {
}
resolve(route: ActivatedRouteSnapshot): any {
// get tombstoneDefault data
// then replace with this.someService.getData(route.params.id)
return Observable.from(tombstoneDefault.data).filter(post => {
return post.slug === route.params.slug;
}).switchMap((result) => { // this errors out
// this.someService.getData(route.params.id)
});
}
}