首页 > 解决方案 > Angular,RxJs - 动态新可观察,用户反应为解决方案

问题描述

我们正在创建一个信使模块,它需要基于 RxJs,并且需要根据用户对另一个组件的反应发出一个值。

我已经尝试使用 of(),传递现有的 BehaviorSubject,但它们都没有按预期工作。该功能应该像用户可以解决的简单承诺。

一些原型代码来展示这个想法:

MessageService {
  message = new BehaviorSubject(undefined);

  addMessage(message) {
    this.message.next(message);
    return new Subject();
  }

  userClick(boolean) {
  // clicked on Ok or Cancel
  // We want to send that value to the subscription on addMessage
  }

}

AnotherService {
  ....
  this.messageService.addMessage('Are you sure?')
      .subscribe(boolean => console.log(boolean));
  ....
}

因此,当用户单击 MessageService 中处理的内容中的 Ok 或 Cancel 按钮时,AnotherService 上的订阅应该会收到答案。

标签: angularrxjs

解决方案


要执行此操作,您需要在某个地方创建一个 Observable 以及true/false例如将通过的方法。

这可以通过

requestUser(): Observable<boolean> {
// do some actions

return new Observable(observer => {
  // react here on what user does
  observer.next(true);
})
}

什么会导致订阅者在subscribe.


推荐阅读