ここで$ eventが正確に実行していることと、この2つの例の違いは少し混乱しています
<button (click)="clicked($event)"></button>
@Component(...)
class MyComponent {
clicked(event) {
event.preventDefault();
}
}
そして
<button (click)="clicked()">Click</button>
@Component(...)
class MyComponent {
clicked(event) {
}
}
$event
はイベント自体です。
イベントバインディング(someevent)
により、DOMイベントおよびEventEmitter
イベントにバインドできます。構文はまったく同じです。
DOMイベントの場合、$event
はMouseEvent
、KeyboardEvent
、またはリッスンするイベントの種類のイベント値です。
EventEmitter
イベントの場合、発行された値は$event
として利用可能です
この例では、$event
は発行されたFerrari
carインスタンスを参照すると仮定します。
@Output() carChange:EventEmitter<Car> = new EventEmitter<Car>();
someMethod() {
this.carChange.emit(new Car({name: 'Ferrari'}));
}
$event
のように(click)="clicked()"
を使用しない場合、イベント値は渡されません。
実際に私がそれを覚えている限りではまだいくつかのブラウザで渡されますしかし全部ではありません(どれを覚えていないか)
ただし、Angulars WebWorker機能を使用している場合、明示的にリストしないと、メソッドは発生または放出されたイベントを取得しない可能性があります。
テンプレートで_$event
_を渡さない場合、clicked()
メソッドで_$event
_変数を使用できません。
こちらをご覧ください Plunker クイック比較