如何知道是否设置了可观察的更改值或最终值

时间:2018-12-25 12:39:39

标签: angular typescript observable angular7 angular-observable

我有一个类型为dplyr的变量,该值是从另一个类型为Observable的函数中设置的,该函数类似于:

data.table

现在我该如何检测或知道returnDate值是否已更改,或者可观察对象是否已接收到另一个值。 基本上我正在使用此可观察对象更改日期,因此我需要知道特定对象(this.data.Date)是否更改了给定值(observer.next),或者是否存在诸如final / finalaize的辅助功能。对于可观察者。

2 个答案:

答案 0 :(得分:0)

尽管很难从您共享的代码中理解您执行此操作的方式。但据您所知-

  

所以如果给定,我需要知道一个特定的对象(this.data.Date)   值已更改

在rxjs可观察对象的情况下,有一个运算符distinctUntilChanged的作用完全相同。阅读here

  

仅在当前值与上一个值不同时发射。

样品溶液

ng-if="removed_{{product.product_id}} == 'added'"

看看是否适合您。

答案 1 :(得分:0)

如果您每次返回要订阅的new Observable(),您将获得不同的值,例如,您返回return new Observable(Math.random()*10)并订阅了2个组件,您将获得不同的值,但是我认为您需要获得相同的价值,因此对于这种情况,请使用Subject()

首先您必须声明它,然后设置值,然后返回this.subject.asObservable(),这使您有机会订阅该主题。

简单的例子

  // set initial value to subject, ussualy set data above constructor
  dataSubject = new BehaviorSubject(null);

  // then you get data from server
  // response can be data from serve or data from eventEmitter whatever you need

  this.dataSubject.next(response);

  // then return this subject

  return this.dataSubject.asObservable()

在这种情况下,请使用BehaviorSubject,因为它可以保存值,还可以设置主题的初始值

如果您还有其他问题,请随时提问。