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