Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度,RxJs-动态新观测,用户反应为分辨率_Angular_Rxjs - Fatal编程技术网

Angular 角度,RxJs-动态新观测,用户反应为分辨率

Angular 角度,RxJs-动态新观测,用户反应为分辨率,angular,rxjs,Angular,Rxjs,我们正在创建一个messenger模块,它需要基于RxJs,并且需要根据用户对另一个组件的反应发出一个值 我尝试使用of(),传递现有的BehaviorSubject,但没有一个按预期工作。该功能应该像一个简单的承诺,用户可以解决什么 一些原型代码显示了这个想法: MessageService { message = new BehaviorSubject(undefined); addMessage(message) { this.message.next(message);

我们正在创建一个messenger模块,它需要基于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中处理的内容中的“确定”或“取消”按钮时,另一个服务的订阅应该会收到答案。

要执行此操作,您需要在某个地方创建一个可观察的对象,以及一个将传递
真/假的方法

这可以通过以下方式实现:

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

return new Observable(observer => {
  // react here on what user does
  observer.next(true);
})
}
requestUser():可观察{
//做一些动作
返回新的可观察对象(观察者=>{
//在这里对用户的行为做出反应
观察者:下一个(正确);
})
}

什么会导致订阅者在
subscribe

上获得true/false您的问题尚不清楚。但我看到有数据在两个类之间传输,所以使用第三个类来保存状态可能是有意义的。