RxJs 和 Angular,我需要从路由中读取两个参数,我想使用管道运算符

RxJs and Angular, i need read two params from route and i want to use pipeable operators

给定一个 Angular 路由,我需要依次从路由器读取两个参数。 其实我的代码有嵌套订阅,但我不太喜欢它们

  this.route.parent.parent.params.subscribe(params => { 
      //read 'params'
      this.route.parent.parent.data.subscribe(anotherParams => {
         //read 'anotherParams' and do some thing with 'params'
       })
   })

我想使用 rxjs 运算符写入 'subscribe' 一次,并在其中提供对两个参数的访问权限。

像这样:

 this.route.parent.parent.params.pipe( //some operators )
 .subscribe ( params, anotherParams => {
    'params' and 'anotherParams" readable inside that
  })

您可以使用 mergeMapconcatMapswitchMap 为您订阅另一个 inner observable。

这是一个使用 switchMap 的例子:

this.route.parent.parent.params.pipe(
  switchMap(params => this.route.parent.parent.data.pipe(
    map(otherParams => ({params , otherParams }))
  ))
).subscribe(({params, otherParams}) => {
  // 'params' and 'anotherParams" readable inside that
});