Angular 7: Как отправить и получить глобальное событие? - PullRequest
0 голосов
/ 23 июня 2019

Я изучаю angular, извините за глупый вопрос.

Мне нужно создать службу для окон с одним экземпляром службы или иметь возможность отправлять широковещательные события и прослушивать их в каждом компоненте.

Использование @input и @output не похоже. Существует разное вложение компонентов.

Как решить эту проблему?

1 Ответ

0 голосов
/ 24 июня 2019

Один из способов реализовать это - использовать для этого сервис. Внутри сервиса создайте переменную-член Subject (вам нужен RxJS, угол которой уже установлен, потому что это зависимость).

Тема может быть подписана любым компонентом за пределами сервиса (вам нужно внедрить сервис в конструкторе компонента). Затем, когда вы захотите вызвать это событие, вы вызываете .next () для субъекта, и каждый подписчик активирует свой собственный обратный вызов.

Когда подписка завершена и больше не нужна, важно .unsubscribe () от субъекта, в противном случае существует риск утечки памяти (так как подписчик не отменяет подписку сам).

Есть много примеров, здесь простой.

...