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