从Angular2中的observable获取最新值

时间:2016-12-15 19:24:29

标签: angular observable

是否可以从可观察对象中获取最新元素,就像我订阅它并将该值用于动作一样?

我尝试了下面的代码,但这不起作用。

this.af.database.list('photos')
  .single()
  .do(res => console.log(res))
  //I want to navigate to another routerLink in the do statement

1 个答案:

答案 0 :(得分:0)

所以,我要做一个假设。你想要一个长期可观察的最新值。

为此,您需要确保observable是一个BehaviorSubject(它始终具有可供使用的初始值),或者已使用publishReplay运算符进行了可重放。使用publishReplay时,你会得到一个ConnectableObserbable,请务必调用connect。

完成此操作后,您可以使用take(1)限制为单个元素。

例如,假设你想根据最近的点击位置采取一些行动。

var source = Observable.fromEvent(document, 'click')
    .publishReplay(1);
source.connect();

然后再

source.take(1).subscribe(ev => console.log(`(${ev.clientX}, ${ev.clientY})`));