Sie müssen nur einen Dienst erstellen, der Nachrichten ausgibt, auf denen Sie abonnieren können. Es kann sein Observable
von rxjs, EventEmitter
von node.js, oder alles andere, was folgt Observable pattern. Dann sollten Sie Dependency Injection verwenden, um diesen Service in konkrete Komponenten zu injizieren. Siehe this plunker.
class Broadcaster extends EventEmitter {}
@Component({
selector: 'comp1',
template: '<div>Generated number: {{ generatedNumber }}</div>',
})
class Comp1 {
generatedNumber: number = 0;
constructor(broadcaster: Broadcaster) {
setInterval(() => {
broadcaster.next(this.generatedNumber = Math.random());
},1000);
}
}
@Component({
selector: 'comp2',
template: '<div>Received number: {{ receivedNumber }}</div>',
})
class Comp2 {
receivedNumber: number = 0;
constructor(broadcaster: Broadcaster) {
broadcaster.observer({
next: generatedNumber => this.receivedNumber = generatedNumber
});
}
}
@Component({
selector: 'app',
viewProviders: [Broadcaster],
directives: [Comp1, Comp2],
template: `
<comp1></comp1>
<comp2></comp2>
`
})
export class App {}
PS In diesem Beispiel verwende ich EventEmitter
von angular2, aber auch hier kann es sein, was auch immer Sie
http://embed.plnkr.co/aJe5SUtFlnpmGXWA5eHk/ – Difinity