Events 角度2事件广播

Events 角度2事件广播,events,broadcast,observable,angular,eventemitter,Events,Broadcast,Observable,Angular,Eventemitter,新的角度2。我正在同一级别组件之间广播一个事件。目前我知道EventEmitter可以将事件传输到上层组件 我已经检查了这一点,知道observable可能是解决我问题的一种方法,但该url中的示例似乎不适合我 有人知道如何将它(可观察)用于广播事件或以其他方式将事件传输到同一级别的组件吗?您只需要创建一些服务,该服务将发出您可以订阅的消息。它可以来自rxjs,也可以来自node.js,或者后面的任何内容。然后,您应该使用依赖注入将此服务注入到具体组件中。看 类广播程序扩展EventEmitte

新的角度2。我正在同一级别组件之间广播一个事件。目前我知道EventEmitter可以将事件传输到上层组件

我已经检查了这一点,知道observable可能是解决我问题的一种方法,但该url中的示例似乎不适合我


有人知道如何将它(可观察)用于广播事件或以其他方式将事件传输到同一级别的组件吗?

您只需要创建一些服务,该服务将发出您可以订阅的消息。它可以来自rxjs,也可以来自node.js,或者后面的任何内容。然后,您应该使用依赖注入将此服务注入到具体组件中。看

类广播程序扩展EventEmitter{}
@组成部分({
选择器:“comp1”,
模板:“生成的编号:{{generatedNumber}}”,
})
类Comp1{
生成编号:编号=0;
建造商(广播公司:广播公司){
设置间隔(()=>{
next(this.generatedNumber=Math.random());
},1000);
}
}
@组成部分({
选择器:“comp2”,
模板:'接收编号:{receivedNumber}}',
})
类Comp2{
接收编号:编号=0;
建造商(广播公司:广播公司){
播音员({
下一步:generatedNumber=>this.receivedNumber=generatedNumber
});
}
}
@组成部分({
选择器:“应用程序”,
视频提供商:[广播公司],
指令:[Comp1,Comp2],
模板:`
`
})
导出类App{}

PS在本例中,我使用angular2,但同样,它可以是您想要的任何对象

使用行为主体

服务:

import { Injectable } from '@angular/core';
import {BehaviorSubject} from 'rxjs/BehaviorSubject';    

@Injectable()
export class MyService {

   public mySubject: BehaviorSubject<number> = new BehaviorSubject<number>(0);


   public doSomething(): void { 
      let myValue: number = 123;
      this.mySubject.next(myValue);
   }
}

感谢您响应并澄清了“可观测模式”的概念。角度发射器的最新版本已更改为使用observables
broadcaster.subscribe(generatedNumber=>this.receivedNumber=generatedNumber)你能为现代2更新这个答案吗?我想我很接近了,但是我的组件2没有捕捉到事件,即使在更新为使用订阅后也是如此。我使用这种方法获得了一个角度材质工具栏单击事件,以打开和关闭角度材质Sidenav组件-干杯
@Component({ 
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.css']
})
export class MyComponent {

   constructor(private myService: MyService) { 
        this.myService.mySubject.subscribe(
             value => {
                console.log(value); 
             }
        );
   }

}