Angular 2 Излучатели событий против объекта
В Angular 2 какая разница между Event Emitter и Subject для объявления события? Похоже, что излучатели событий менее сложно объявить.... Какой способ предпочтительнее Angular 2?
dataRefreshEvent = new EventEmitter();
private companyDataAnnouncedSource = new Subject();
companyDataAnnouncedSource$ = this.companyDataAnnouncedSource.asObservable();
Ответы
Ответ 1
Нет большой разницы. EventEmitter
extends Subject
.
Команда Angular2 подчеркнула факт, что EventEmitter
не следует использовать ни для чего другого, кроме @Output()
в компонентах и директивах.
Команда Angular может изменить базовую реализацию EventEmitter
и сломать код пользователя, который использует EventEmitter
для того, для чего он не предназначался. Это главное отличие.
Ответ 2
Также EventEmitter
автоматически очищается в отличие от пользовательского Subjects
, который вам нужно отписаться в onDestroy
hook.