Подтвердить что ты не робот

Angular 2 Излучатели событий против объекта

В Angular 2 какая разница между Event Emitter и Subject для объявления события? Похоже, что излучатели событий менее сложно объявить.... Какой способ предпочтительнее Angular 2?

dataRefreshEvent = new EventEmitter();

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

Ответ 1

Нет большой разницы. EventEmitter extends Subject.

Команда Angular2 подчеркнула факт, что EventEmitter не следует использовать ни для чего другого, кроме @Output() в компонентах и ​​директивах.

Команда Angular может изменить базовую реализацию EventEmitter и сломать код пользователя, который использует EventEmitter для того, для чего он не предназначался. Это главное отличие.

Ответ 2

Также EventEmitter автоматически очищается в отличие от пользовательского Subjects, который вам нужно отписаться в onDestroy hook.