Наблюдаемая подписка только на получение первого события - PullRequest
0 голосов
/ 01 апреля 2019

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

Служба:

@Injectable()
export class SiteManagementEventService {
  private messageSource = new BehaviorSubject<SiteManagementEvent>(defaultEvent);   
  data = this.messageSource.asObservable();

  constructor() {}

  // publish the event using the service
  public publish(event: SiteManagementEvent) {
    if (event !== null) {
      this.messageSource.next(event);
    }
  }
}

Публикация событий:

constructor (
  .......
  private eventService: SiteManagementService,
) {}
........
this.eventService.publish(event);

Подписаться на события:

constructor (
  .......
  private eventService: SiteManagementService,
) {}

onInit() {
  ......
  this.eventService.data.subscribe(event => {console.log("event received"});
}

При наличии вышесказанного проблема заключается вчто только один принимающий компонент (у меня есть несколько принимающих компонентов) получает одно событие и не получает никаких следующих событий.

Что-то я не так сделал?Любые онлайн образцы для этого?

Спасибо!

1 Ответ

1 голос
/ 01 апреля 2019

Вы используете BehaviorSubject правильно. Будет воспроизведено последнее переданное значение для новых подписок.

Убедитесь, что ваш сервис одноразовый, используя @Injectable({provideIn: "root"}).

...