RXJS BehaviorSubject.next () не вызывает абонентов - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть служба со следующим

@Injectable({
  providedIn: 'root'
})
export class MyService {
  private mySubject = new BehaviorSubject({});
  public currentData = this.mySubject.asObservable();

  updateData(data: any) {
     this.mySubject.next(data);
  }
}

У меня есть компонент, который подписан на Observable со следующим:

export class MyComponent implements OnInit {
  constructor(private myService: MyService) { }

  ngOnInit() {
    this.myService.currentData.subscribe(data => /* some logic here */);
  }  
}

У меня есть другой компонент, который вызываетupdateData метод обслуживания.

export class AnotherComponent {
  constructor(private myService: MyService) { }

  onClick(data) {
    this.myService.updateData(data);
  }
}

Я ожидаю, что .subscribe, определенный в MyComponent, будет вызван при вызове this.myService.updateData в AnotherComponent.onClick, но это не так.Я могу подтвердить, что к Observable присоединен подписчик, как и следовало ожидать, учитывая код.

1 Ответ

0 голосов
/ 25 сентября 2018

замыкание, определенное в this.myService.currentData.subscribe(data => /* some logic here */);, выдавало необработанное исключение, которое предотвращало бы повторное вызывание этого замыкания при последующих вызовах .next().Исправление источника исключения (или использование try...catch) решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...