typescript - $event 对象在 Angular 2 中到底做什么?

标签 typescript angular event-handling

我有点困惑 $event 在这里到底做什么以及这两个示例之间有什么区别

<button (click)="clicked($event)"></button>

@Component(...)
class MyComponent {
  clicked(event) {
    event.preventDefault();
  }
}

<button (click)="clicked()">Click</button>



 @Component(...)
    class MyComponent {
      clicked(event) {
      }
    }

最佳答案

$event 是事件本身。

事件绑定(bind)(someevent)允许绑定(bind)到DOM事件和EventEmitter事件。语法完全相同。

对于 DOM 事件,$eventMouseEventKeyboardEvent 或您监听的任何事件类型的事件值。

对于 EventEmitter 事件,发出的值可用作 $event

假设此示例 $event 引用发出的 Ferrari 汽车实例:

@Output() carChange:EventEmitter<Car> = new EventEmitter<Car>();

someMethod() {
  this.carChange.emit(new Car({name: 'Ferrari'}));
}

如果您不像 (click)="clicked()" 那样使用 $event,则不会传递事件值。

实际上据我记得它仍然在某些浏览器中传递但不是在所有浏览器中(不记得是哪些)

但是,如果您使用 Angulars WebWorker 功能,那么如果您没有明确列出,您的方法可能无法获取已触发或已发出的事件。

关于typescript - $event 对象在 Angular 2 中到底做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58586845/

相关文章:

angular - Ionic 3 登录后刷新侧边菜单

javascript - 无法弄清楚为什么我的 change(...) 事件处理程序在这种情况下不起作用

javascript - 监听 iframe 内容的 addEventListener

javascript - 关闭和事件

typescript - Angular2 TypeError : linkParams. forEach 不是函数

javascript - 错误: Error: No NgModule metadata found for 'AppComponent'

reactjs - 无法在Formik/Dist中解析React -自定义WebPack配置

angular - 具有不同属性名称的 typescript map 类型

css - Angular:封装导致 CSS 冲突

Material 成分的 Angular 形状变化事件