Я пытаюсь отправить объект из компонента-отправителя в компонент-получатель через сервис.В компоненте-отправителе есть событие щелчка, которое отправляет объект в службу;
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;
})
}
}
, но он запускается только один раз при загрузке компонента с пустым объектом (что на самом деле является ожидаемым поведением, поскольку не былонажмите на первую загрузку).После этого каждый щелчок по кнопке отправляет данные в сервис, но на компонент ничего не приходит, как будто подписка завершена: /
В чем может быть проблема?