@kodwi
https://moikrug.ru/kodwi

Какие есть способы отслеживать изменение объекта в Angular 2 (аналоги $watch)?

Есть общий сервис, в нем данные. Он подключен к разным компонентам. Нужно при изменении объекта этого сервиса в одном компоненте отловить эти изменения в другом. В Angular 1 есть $watch, и я верю, что есть аналоги во второй версии. Может как-то через RxJS?

Заранее спасибо.
  • Вопрос задан
  • 861 просмотр
Решения вопроса 1
@kodwi Автор вопроса
https://moikrug.ru/kodwi
Нашел ответ. Реактивное программирование. Нужна сущность 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!')
    });
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы