在不应用订阅的情况下更新可观察值的值

Updating value of an observable without applying the subscribe

我订阅了一个带有 pairwise 管道的 Observable 以获得以前的值和新的值。

但有时我想告诉 Observable 该值已更新而不应用 subscribe 函数。它将确保 previousValue 始终更新但不会始终应用订阅功能。

// Listen to FomControl -> update value variable.
this.valueChangesSubscription = this.control.valueChanges
    .pipe(startWith(this.defaultValue), pairwise())
    .subscribe(async ([previousValue, newValue]) => {
        // Do something
    });

我更新 formControl 的值,有时会发出事件,有时不会:

this.control.setValue(formattedValue, { emitEvent });

但我希望即使事件未发出,subscribe 函数的 previousValue 也是真正的 previousValue 而不是最新发出的事件。

谢谢。

您可以尝试使用filter运算符过滤订阅的结果

private myBooleanValue = false;

// Listen to FomControl -> update value variable.
this.valueChangesSubscription = this.control.valueChanges
    .pipe(
       startWith(this.defaultValue), 
       pairwise(),
       // It will never emit a value to subscribe since its false
       filter(([previousValue, newValue]) => this.myBooleanValue),
     )
    .subscribe(async ([previousValue, newValue]) => {
        // Do something
    });