Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度6创建一个可观察的,以检查变量的变化_Angular_Typescript_Rxjs_Angular6_Rxjs6 - Fatal编程技术网

Angular 角度6创建一个可观察的,以检查变量的变化

Angular 角度6创建一个可观察的,以检查变量的变化,angular,typescript,rxjs,angular6,rxjs6,Angular,Typescript,Rxjs,Angular6,Rxjs6,我使用的是Angular 6,我想检查变量是否有变化,以及变量有值时是否停止或取消订阅 所以我想到了一个可观察的: myValue; // variable to be checked myObservable = Observable.timer(2000); // every 2 seconds myObservable.subscribe(); // start private _value: any; public set value(value: any) { this._v

我使用的是Angular 6,我想检查变量是否有变化,以及变量有值时是否停止或取消订阅

所以我想到了一个可观察的:

myValue; // variable to be checked

myObservable = Observable.timer(2000); // every 2 seconds

myObservable.subscribe(); // start
private _value: any;
public set value(value: any) {
  this._value = value;
  window.alert("Value is set!");
}
public get value() { return this._value; }
然后继续检查myValue,如果值不是空的

myObservable.unsubscribe(); // stop
这就是我的想法


如何执行此操作?

如果您只想在设置值时执行某些操作,则可以使用getter和setter而不是observable:

myValue; // variable to be checked

myObservable = Observable.timer(2000); // every 2 seconds

myObservable.subscribe(); // start
private _value: any;
public set value(value: any) {
  this._value = value;
  window.alert("Value is set!");
}
public get value() { return this._value; }

根据实际的潜在问题,可能还有其他(更好的)解决方案

你为什么要这样做?我几乎可以保证有更好的解决方案来解决根本问题。我完全同意@IngoBürk的观点,这听起来像是一个错误。您试图解决的问题是什么?问题是我正在进行一些api调用,我需要确保在继续之前拥有所有数据。您应该为此使用适当的rxjs管道和运算符。但是您需要向我们展示更多代码来帮助您实现这一点。要查看的内容是,例如,forkJoin。请查看我是否需要将此设置为setTimeout,以便它不断检查变量是否为空?不,不需要。每当有人试图为setter赋值时,就会调用setter。