Излучение и трансляция событий по всему приложению в Angular

Есть ли способ генерировать событие в angular2, которое можно прослушать во всем приложении? Как мы использовали в AngularJS, используя $rootScope.broadcast а также emit, Можно ли добиться того же в angular2? Я читаю о @Output() а также EventEmitter() и реализовал его, но он ограничивает только родителя, чтобы прослушивать событие, испускаемое потомком.

Я читаю о BehaviorSubject быть одним из способов сделать это. Это правильный подход? Любое другое решение для этого?

1 ответ

Решение

В Angular2 нет глобальной области видимости. Есть только комплектующие и услуги.

С помощью услуг вы можете определить их объем по месту их предоставления. Если вы предоставите один в @NgModule({providers: ...}) (или в импортированном модуле) он становится глобально доступным. Если вы предоставляете его в компоненте, он доступен только этому компоненту и его дочерним элементам.

Примеры использования общих служб см. По https://github.com/dart-lang/sdk/issues/27637

Вы также можете отправить всплывающее событие DOM, как показано в Angular2, как узнать, когда ЛЮБОЕ поле ввода формы потеряло фокус

События, выпущенные с @Output() someOutput:EventEmitter = new EventEmitter(); не пузырь

Другие вопросы по тегам