если вы каждый раз возвращаете new Observable()
, где вы будете подписываться, вы будете получать разные значения, например, вы возвращаете return new Observable(Math.random()*10)
и вы подписались на 2 компонента, вы получите разные значения, но я думаю, что вам нужнополучите то же значение, поэтому для этого сценария используйте Subject()
Сначала вы должны объявить его, затем установить значение и затем вернуть this.subject.asObservable()
, что дает вам возможность подписаться на эту тему.
Простойпример
// set initial value to subject, ussualy set data above constructor
dataSubject = new BehaviorSubject(null);
// then you get data from server
// response can be data from serve or data from eventEmitter whatever you need
this.dataSubject.next(response);
// then return this subject
return this.dataSubject.asObservable()
В этом случае используйте BehaviorSubject, потому что он может содержать значение, а также вы можете установить начальное значение предмета
Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать.