Излучение и трансляция событий по всему приложению в 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();
не пузырь