在不应用订阅的情况下更新可观察值的值
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
});
我订阅了一个带有 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
});