更新rxjs中的observable



我正在尝试更新一个值并将其传递到另一个组件中。这是我服务的

public useCashback = false;
setUseCashback() {
console.log(this.useCashback);
this.useCashback = !this.useCashback;
console.log(this.useCashback);
}
getUseCashback(): Observable<Boolean> {
return observableOf(this.useCashback);
}

在我的组件中,我只需调用setUseCashback来反转真实或错误的

onUseCashback() {
this.checkoutService.setUseCashback();
}

然后在另一个组件中,我想在更新时接收它

ngOnInit(): void {
this.useCashback = this.checkoutService
.getUseCashback()
.subscribe((response: any) => {
console.log(response);
return response;
});

所以基本上它在setUseCashback中得到更新,我通过记录useCashback变量看到了这一点,但这在我的组件中没有响应。

您需要使用Subject使其可观察。在这种情况下,BehaviorSubject允许您使用给定的值对其进行初始化。快速更新您的代码:

public useCashback: BehaviorSubject<boolean> = new BehaviorSubject(false);
setUseCashback(): void {
const currentUseCashback = this.useCashback.getValue();
this.useCashback.next(!currentUseCashback);
}
getUseCashback(): Observable<boolean> {
return this.useCashback.asObservable();
}
ngOnInit(): void {
this.checkoutService.getUseCashback().subscribe((useCashback) => {
this.useCashback = useCashback;
});
}

最新更新