Angular 角度2事件发射器与主体

Angular 角度2事件发射器与主体,angular,Angular,在Angular 2中,事件发射器和宣布事件的主题之间有什么区别?似乎事件发射器的声明不那么复杂……Angular 2更喜欢哪种方式 dataRefreshEvent = new EventEmitter(); private companyDataAnnouncedSource = new Subject(); companyDataAnnouncedSource$ = this.companyDataAnnouncedSource.asObservable(); 差别不大事件发射器扩展主

在Angular 2中,事件发射器和宣布事件的主题之间有什么区别?似乎事件发射器的声明不那么复杂……Angular 2更喜欢哪种方式

dataRefreshEvent = new EventEmitter();

private companyDataAnnouncedSource = new Subject();
companyDataAnnouncedSource$ = this.companyDataAnnouncedSource.asObservable();

差别不大<代码>事件发射器扩展
主题

Angular2团队强调了一个事实,
EventEmitter
不应用于组件和指令中的
@Output()
s之外的任何东西


Angular团队认为,他们可能会更改
EventEmitter
的底层实现,并破坏使用
EventEmitter
的用户代码。这是主要的区别。

此外,
EventEmitter
会自动清除,这与您需要在
onestory
生命周期挂钩中取消订阅的自定义
主题不同。

默认情况下,EventEmitter是同步的,而Subject不是。
您可以将标志传递给EventEmitter以使其异步。

感谢您的澄清。我将继续讨论这个主题,尽管它似乎有很多额外的步骤来实现相同的结果……就像使用angular 2Do一样,你对此有引用吗?Misko在对Github问题的评论中提到了这一点。我没有联系。2018年还是这样吗?(5/6)@GünterZöchbauer谢谢你的消息来源,我希望文档也能有这些细节,再次感谢!在充分学习了Rxjs之后,我现在意识到可以用EventEmitter做更多的事情。这是EventEmitter最重要的部分,也是它存在的原因。你为什么这么说?请看这里:在不深入细节的情况下,任何可观察到的内容都将被跟踪并取消订阅。此答案不正确,请阅读示例。不确定您是否正确两者都是同步的