在Angular 2中,Event Emitter和Subject宣布活动有什么区别?似乎事件发射器的声明要简单得多...... Angular 2首选哪种方式?
dataRefreshEvent = new EventEmitter();
private companyDataAnnouncedSource = new Subject();
companyDataAnnouncedSource$ = this.companyDataAnnouncedSource.asObservable();
Run Code Online (Sandbox Code Playgroud)
Gün*_*uer 84
没有太大区别.EventEmitter延伸Subject.
Angular2团队强调了这一事实,但EventEmitter不应该用于@Output()组件和指令中的任何其他内容.
Angular团队表示,他们可能会更改EventEmitter用户代码的基础实现,并破坏用户代码的用途EventEmitter.这是主要的区别.
小智 21
也EventEmitter可以自动清理,而不像Subjects您需要在onDestroy生命周期钩子中取消订阅的自定义.
Nik*_*dav 13
EventEmitter并Subjects服务于相同的目的 - 向观察者通知事件。
但EventEmitter只能用于将事件从子级通知给父级,即,它只能与 一起使用@Output()。
Subjects应该首选跨不同组件通知事件。主题从一个组件发出值,任何其他组件都可以订阅它,并且它会收到通知。
小智 5
默认情况下,EventEmitter 是同步的,而Subject 则不是。您可以将标志传递给 EventEmitter 以使其异步。
| 归档时间: |
|
| 查看次数: |
16371 次 |
| 最近记录: |