我正在阅读 O'Reilly 出版的 Shyam Seshadri 的“Angular Up and Running”。在关于输出和事件发射的讨论中,我有点困惑。
组件中的 EventEmitter 被声明、初始化和实现为:
@Output() private toggleFavorite: EventEmitter<Stock>;
constructor() {
this.toggleFavorite = new EventEmitter<Stock>();
}
onToggleFavorite(event) {
console.log('We are toggling the favorite state for this stock.', event);
this.toggleFavorite.emit(this.stock);
}
app.component.html 中的绑定内容如下:
(toggleFavorite)="appToggleFavorite($event)"
但是 app.component.ts 中的方法定义为:
appToggleFavorite(stock: Stock) {
console.log('Favorite for stock ', stock, ' was triggered.');
}
如果绑定传递了 $event 对象,并且绑定的方法需要一个 Stock 类型,那么为什么会这样呢?
(它确实有效,我已经测试过了。)
我不是在问 $event 对象做什么,我已经知道了。请仔细阅读我上面的问题。我在问:当绑定函数需要一个类型化参数时,为什么绑定到 EventEmitter 对象传递 $event 对象而不是预期类型的对象,为什么它似乎工作(参数获取它的值作为打字。)