Я новичок в Angular и у меня проблема. У меня есть два компонента A и B. И SharedDataService.
В компоненте A я получаю данные из службы REST и для обмена этими данными с компонентом B я хочу использовать SharedDataService.
Компонент А:
let data: Data;
this.restService.getData().subscribe(data =>
{
this.sharedService.addSharedData(data);
} , error => console.error(error));
Компонент B:
let sharedData: Data;
this.SharedService.getSharedData()
.subscribe(ds => sharedData = ds);
И SharedService:
public sharedData: Data;
constructor() { }
addSharedData(data : Data) {
this.sharedData = data;
}
getSharedData() : Observable<Data> {
return of (this.sharedData);
}
Во время отладки я обнаружил, что Компонент B пытается получить данные в несколько раз раньше, чем Компонент A поместил туда что-то. Как это устроено? Я думал, что подписка всегда извлекает данные, если они изменились. Но почему сейчас это не работает?
P.S. Обмен данными работает хорошо. Например, это работает, если я поставлю this.sharedService.addSharedData (fakedata); до подписки restService в Компоненте A