2017-02-14 134 views
5

我想在Angular2中使用observables进行多个http调用。每个可观测值都依赖于之前的可观测值。如果我想返回内部观察值,那么我可以在父组件中订阅它),那么这怎么做呢?Angular2返回嵌套观察对象的内部可观察者

这是我试过的,但我无法订阅父组件中的observable。

子组件:

observablesFn(){ 
    observable1().subscribe(data1 => { 
     observable2().subcribe(data2 => { 
      //I want to return this observable (before subscription b/c I want to subscribe in the parent component) 
      return observable3(); 
     }) 
    } 
} 

回答

7

你提的问题是很难理解,因为你没有给太多的上下文,但它听起来就像你希望得到的observable3()结果从observablesFn()返回。现有的return语句是从嵌套的内部匿名函数返回的,而不是您最外面的作用域。我认为你希望根据这些方面做更多的事情。

observablesFn(){ 
    return observable1().map(data1 => { 
    return observable2(data1).map(data2 => { 
     return observable3(data1, data2); 
    }); 
    }); 
} 

这将返回从observablesFn(),而不是它的嵌套内部函数。

有必要使用.map而不是.subscribe,因为它返回的是observable而不是订阅。