在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 次 |
最近记录: |