alienworkshop
@alienworkshop

Как отслеживать изменения переменной внутри компонента?

1. Есть массив внутри компонента;
2. В нескольких разных местах внутри компонента добавляется новый элемент в этот массив (в методе createMessage() и внутри подписчика getIncomingMessagesStream() );
3. Каждый раз, когда в массив добавляется новый элемент, нужно выполнить несколько действий сразу же (проскролить страницу вниз и ещё некоторые);
4. Вместо того, чтобы прописывать дополнительные действия в нескольких местах, я хочу сделать это в одной точке внутри компонента, когда в мой массив будет добавленно новое значение.

Как это сделать?
  • Вопрос задан
  • 1295 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AlexaZem
Можно данные ввобще выкинуть в service который запровайдить в общий модуль для этих компонентов.
Ну а в самом сервисе если на примере user_id:
@Injectable()
export class DataService {
	private userIdSubject = new Subject<number>();
	$userId = this.userIdSubject.asObservable();

	setUserId(id: number) {
		this.userIdSubject.next(id);
	}
}


В самих компонентах если нужно поменять данные:
(dataSvc: DataService )
this.dataSvc.setUserId(id);

В компонентах которые должно отслеживать изменения и принимать данные:
(dataSvc: DataService )
this.dataSvc.$userId.subscribe((id: number) => console.log('has changes!', id));

И не забывать отписываться)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы