我从Angular的route.params
开始使用内部Observable。
我希望能够保留params'超出'更高阶可观察switchMap
的值,在我的情况下会执行http调用。
例如:
this.data$ = this.route.params
.switchMap(params => this.http.get('/api', { param1: params.param1, param2: params.param2 }))
.map(([params, data]) => {
//possible to get params AND data here? This returns undefined.
return something
})
是否可以在switchMap之后访问params?
答案 0 :(得分:3)
使用switchMap的ResultSelector参数
根据源(外部)发射和内部可观察发射的值和指数在输出Observable上产生值的函数。传递给此函数的参数是
http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-switchMap
this.data$ = this.route.params
.switchMap(params => this.http.get('/api', { param1: params.param1, param2: params.param2 }),
(params, data) => {
return [params, data];
})
.map(([params, data]) => {
//possible to get params AND data here? This returns undefined.
return something
})
答案 1 :(得分:2)
你可以使用forkJoin:
this.data$ = this.route.params
.switchMap(params =>
Observable.forkJoin([
Observable.of(params),
this.http.get('/api', { param1: params.param1, param2: params.param2 })
])
.map(([params, data]) => {
return something
})