如何订阅订阅另一个observable的observable并在Angular中的下一个碰撞?

时间:2018-06-05 14:57:09

标签: angular typescript observable

我创建的服务需要有关当前路径的一部分的信息。因此,在我的组件中,我必须查看路线和,因为它已完成我需要订阅实际的服务电话,如下所示。

ngOnInit() {
  this.activeRoute.paramMap
    .subscribe(next => this.itemService.getItem(next.get("id"))
      .subscribe(next => this.item = next));
}

我不确定它是否是一个好方法的原因是两个服务都返回一个可观察的实例,这迫使我在两个上下文中使用next,其中一个在另一个中。 Lint提到我隐藏了内部的 next

似乎按原样工作,但购买安然股票似乎就像一个好主意。让我担心的是两件事。但是,这样的警告可能是(但不是必须),这是一个糟糕设计的标志,仅仅因为巧合而持有。迟早,我可能需要同时访问某些要求的 next 值,然后我该怎么办?

  1. 此类电话的上述最佳做法是什么?
  2. 如何在内部上下文中访问外部 next

1 个答案:

答案 0 :(得分:0)

我的想法是

this.activatedRoute.paramMap.pipe(switchMap((param: ParamMap) => {
      //Not return params
      let id: number = param.has('id') ? parseInt(param.get('id')) : 0;
      //return this.itemService.getItem(id)
      return this.itemService.getItem(id)
    }))
    .subscribe((item:any)=>{
      this.item=item
    })

看到有一个uniq订阅

NOTA:如果不行,你的想法还可以(有时我的paramMap和switchMap有问题)