【问题标题】:updating observable in rxjs更新 rxjs 中的 observable
【发布时间】:2020-10-01 23:02:14
【问题描述】:

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

  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 变量看到了这一点,但这在我的组件内部没有响应。

【问题讨论】:

    标签: angular rxjs


    【解决方案1】:

    您需要使用 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;
        });
    
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      相关资源
      最近更新 更多