Angular& RxJS5 - 保留内部Observable的值超出更高阶Observable

时间:2017-03-03 03:46:35

标签: angular rxjs5

我从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?

2 个答案:

答案 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
    })