这就是事件:)
普通的Javascript
<div></div>
div.addEventListener('click', function($event) {
console.log($event);
})
所有 javascript 原生事件,例如 keyup 或 click,它们都是异步事件,当它们发生时,您可以监听它们(在 Javascript 中添加监听器,或者在 Angular 中添加 HostListener 或事件绑定),然后在您的当事件发生时要调用的函数,您可以捕获该事件,它基本上是一个 Javascript 对象,它保存有关事件源的信息以及与事件相关的所有其他内容。
同样的事情可以在 Angular 中完成:
@HostListener('click', ['$event']) myFunction(theEvent) {
console.log("$event is ", theEvent); //
}
$event 是一个可选参数,如果您不感兴趣,不必将其添加到您的参数中。
正如我所说,$event 包含有关实际事件的所有信息,例如它的名称、它的来源、如果它是一个 keyup 事件、按下的键和所有其他的东西,这意味着你可以获得从Event中提取的所有内容:
@HostListener('click', ['$event.target.id']) myFunction(buttonId) {
console.log("buttonId ",buttonId); //
}
或者你可以
@HostListener('click', ['$event']) myFunction(event) {
console.log("buttonId ",event.target.id); //
}
Angular 中的另一种语法是:
<button (click)="myFunction($event)">
或者在普通的javascript中你可以说:
document.querySelector('button').addEventListener('click',($event)=>{
console.log('the event is',$event);
})
如果你不喜欢使用@HostListener 装饰器,HostListener 也可以写在@Component 装饰器中(虽然你为什么不呢?)
@Component({
selector:"my-component",
host:{
'(click)':'myFunction($event)'
}
})