Как правильно внедрить наблюдателя в общую службу? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть 2 компонента и общий сервис для соединения между ними, я отправляю данные из первого компонента и получаю эти данные в сервисе, но второй компонент не получает эти данные. Первый компонент: INIT:

 constructor(private commonService: commonService) {}

и отправьте данные следующим образом:

this.commonService.notify(this.Index);

общее обслуживание:

private source = new Subject<number>(0);
  public indexChanged$ = this.source.asObservable();
  constructor() {
  }

 public notify(n:number) {
    this.source.next(n);
 }

второй компонент:

constructor(private commonService: commonService) {
    commonService.indexChanged$.subscribe(number  =>{
      console.log("number", number)
    });

Я смотрю здесь и сделал то же самое, но никогда не получал значение. спасибо

* edit - я получаю начальный номер во втором компоненте, но ничего после этого

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете использовать BehaviorSubject.

BehaviorSubject содержит значение и инициализирует его, затем вы можете вызвать метод notify и установить новое значение.

общее обслуживание:

 private source = new BehaviorSubject<number>(0);
 public indexChanged$ = this.source.asObservable();

 constructor() {
 }

 public notify(n:number) {
   this.source.next(n);
}

второй компонент:

 constructor(private commonService: commonService) {
   commonService.indexChanged$.subscribe(number  =>{
     console.log("number", number)
   });
 }
...