2016-02-24 95 views
1

我有一个模式弹出,我编码,以便当调用open()函数时,它返回一个可观察。任何用户然后将获得一个属性的对象,指示在模式中按下了哪个按钮或者它是否已关闭等。角度2条件链条的观察

如果按下'成功'按钮,我想进行一次http调用也返回一个可观察的!我将如何结合这两个观测值?在与承诺角1我可以从承诺回报的承诺,所以我会做类似

var promise = modal.open() 
        .then(function(res) { 
         if (res.success) { 
          return httpService.get(); // also returns a promise 
         } 

         return res; 
        }); 

我怎么会做这样的事情的观测?

+0

使用Observable你也可以返回Observables。这可能是'map'而不是'then'的逻辑。 –

+0

谢谢我会给出一个 – Umair

回答

1

您可以利用可观察运算符来构建异步数据流。在你的情况下,switchMap操作:

var observable = modalObservable.switchMap(() => { 
    return return httpService.get(); // also returns an observable 
}); 

小心导入你需要,因为它们不是默认的操作符(见这个问题:Angular 2 HTTP GET with TypeScript error http.get(...).map is not a function in [null]):

import 'rxjs/add/operator/switchMap'; 

你可以看看在下面的文章和演示文稿的更多细节:

+0

好吧,但只有条件返回http observable?基于模态可观察订阅的价值? – Umair

+0

实际上,在'switchMap'中,您将收到此值作为第一个参数...因此,您可以使用它来创建要返回的新观察值。 –

+0

好的谢谢,但对不起一个问题:)所以用switchmap你可以返回一个值(一个对象)或可观察? – Umair