2

Gibt es eine Möglichkeit, ein Ereignis in angular2 zu senden, das in der gesamten Anwendung gehört werden kann? Wie wir in AngularJS mit $rootScope.broadcast und emit hatten. Kann das gleiche in eckigen2 erreicht werden? Ich lese über @Output() und EventEmitter() und implementierte es, aber es beschränkt nur den Elternteil, auf das Ereignis zu hören, das vom Kind ausgesendet wird.Senden und Senden von Ereignissen in der gesamten Anwendung in Angular

Ich lese über BehaviorSubject als eine der Möglichkeiten, dies zu tun. Ist das der richtige Ansatz? Irgendeine andere Lösung dafür?

+3

Verwenden Observables scheint eine gute Option zu sein: http://stackoverflow.com/questions/34376854/delegation-eventemitter-or-observable-in-angular2/35568924#35568924 – j3r6me

+0

Sie können eine beobachtbare zu Ihrem Elternteil hinzufügen, die bekommen Stellen Sie ein, wenn das Kind ausstößt. Sie können diese Observable dann überall abonnieren, wo Sie möchten. –

Antwort

2

In Angular2 gibt es keinen globalen Bereich. Es gibt nur Komponenten und Dienste.

Mit Diensten können Sie ihren Umfang an dem Ort definieren, an dem Sie sie bereitstellen. Wenn Sie eine in @NgModule({providers: ...}) (oder in einem importierten Modul) angeben, wird es global verfügbar. Wenn Sie es an einer Komponente bereitstellen, ist es nur für diese Komponente und ihre untergeordneten Elemente verfügbar.

Beispiele wie Shared Services nutzen sehen https://github.com/dart-lang/sdk/issues/27637

Sie auch einen sprudelnden DOM -Ereignis kann wie in in Angular2 how to know when ANY form input field lost focus

Events mit @Output() someOutput:EventEmitter = new EventEmitter(); Blase nicht emittiert

gezeigt.

+2

'BehaviorSubject' ist ein einfacher Weg. Hardcore-Reaktivisten denken, dass "Subject" vermieden werden sollte. http://davesexton.com/blog/post/To-Use-Subject-Or-Not-To-Use-Subject.aspx, http://Stackoverflow.com/questions/14396449/why-are-subjects-not- recommended-in-net-reactive-extensions Dies ist also eine eigenwillige Frage. Wenn du neu bei rxjs bist, schlage ich vor, dass du es verwendest, bis du mit der reaktiven Programmierung vertraut bist und du selbst entscheiden kannst. –

+1

Danke Gunter !! Ich werde es tun. Ich wollte nur für mein Wissen bestätigen. Sind Dienstleistungen der beste Weg? –

+0

Dienstleistungen ist ** die ** Möglichkeit, es in Angular2 zu tun. –

Verwandte Themen