为什么 EventEmitter 和输出装饰器需要一起使用? 我看不出两者之间的区别,
如果要求它们一起使用,为什么不只是一个装饰器发出以及绑定到选择器,无论它在哪里使用!
感谢任何解释!
谢谢
答案 0 :(得分:3)
EventEmitter
只是Subject
。
@Output()
是将该字段标记为Angular事件绑定的输出。
我没有在Angular TS中尝试过,但在Angular Dart中,可以使用Stream(相当于Subject
)而不是EventEmitter
。
在最近的版本{D} Angular中完全删除了EventEmitter
。
也许这也适用于Angular TS。
有计划以可能与EventEmitter
不兼容的方式扩展Subject
的API,因此创建了自定义类。
但没有迹象表明这实际上会发生。
答案 1 :(得分:0)
EventEmitter 允许您从此活动中创建自定义事件 emit 并订阅此事件,并对其做出反应。
@Output()允许您将这些事件传播到父组件:
child.Component.ts
@Output() myEvent: EventEmitter<string> = new EventEmitter<string>();
parent.component.ts
<app-child-component (myEvent)="reactToChildEvent($event)"></app-child-component>
编辑:
您可以单独使用EventEmitter
,而不是@Ouput()
,从服务向所有订阅的组件或同一组件内部发送。