Нашел ответ. Реактивное программирование. Нужна сущность Rx.Subject.
Ниже пример на type script.
class SomeService {
info: any = {}; // хотим отслеживать это поле
infoSubject: Rx.Subject = new Rx.Subject();
infoChanged(): Rx.Subject {
return this.infoSubject;
}
addInfo(): void {
this.info.blabla = '123';
this.infoSubject.next(); // этот метод вызывает все подписанные на этот subject колбэки
}
}
class AnotherService {
constructor(private _someService: SomeService) {
// подписываемся на изменения info из SomeService
this._someService.infoChanged().subscribe({
next: () => console.log('Object info from SomeService has changed!')
});
}
}