Угловая подписка срабатывает только при загрузке компонента - PullRequest
0 голосов
/ 04 мая 2019

Я пытаюсь отправить объект из компонента-отправителя в компонент-получатель через сервис.В компоненте-отправителе есть событие щелчка, которое отправляет объект в службу;

 export class SenderComponent implements OnInit {
  constructor(private shareDataService: ShareDataService){}

  myData: Object;

  ngOnInit() {
    this.myData = {};
  }

  onClick() {
    this.myData = {
      name: "Robert",
      visible: true
    }
    this.shareDataService.dataVisibility(this.myData);
  }
}

с кнопкой на стороне пользовательского интерфейса:

<button (click)="onClick()"> Get Data </button>

Связь между компонентами осуществляется с использованием Поведение субъекта в службе:

@Injectable({
  providedIn: 'root'
})
export class ShareDataService {

  changeDataSource = new BehaviorSubject<Object>({});

  public dataUpdate$ = this.changeDataSource.asObservable();

  public dataVisibility = (dataInfo: Object) => {
    this.changeDataSource.next(dataInfo);
  }
}

Компонент Receiver имеет подписку на наблюдаемое;

export class ReceiverComponent implements OnInit {
  constructor(private shareDataService: ShareDataService) { }

  receivedData;

  ngOnInit() {
    this.shareDataService.dataUpdate$.subscribe(success => {
      console.log(success)
      this.receivedData = success;
    })
  }
}

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

В чем может быть проблема?

...