Я прохожу через "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 вместо объекта ожидаемого типа, и почему он работает (параметр получает свои значения как наберется.)