2016-04-25 16 views
4

Angular 2では、ドキュメントとは異なり、イベントバインディングを行うときに、コンポーネントメソッドからイベントデータにアクセスするために$ eventを渡す必要はありません。だから、次のコードは正常に動作します:

テンプレートで:

<h2 (mouseover)="getCoord()" >Random Words</h2> 

コンポーネントで:

getCoord() { 
    console.log(event.clientX + ", " + event.clientY); 
} 

これは、メソッドに至る$イベントオブジェクトを渡す必要がなく、完璧に動作します。

これは問題ありませんか?今はこれが推奨されていますが、ドキュメントには表示されていませんか?私にはうまく見えます。

+0

本当にあなたですか?コードスクールの男? – rubentd

+3

LOLはい、Angular 2コースで働いています。 –

+1

私はこれをクロムに気づいた。 FFで試してみると、エラーが発生する可能性があります。 – dcodesmith

答えて

3

私はこれをAngularのバグだと思っていました。

$eventまたは$event.targetまたはいくつかの他のイベントプロパティが渡されるべき場合には、ユーザーが定義し、明示的argsパラメータを持っている@HostListener()デコレータは、たとえばあります。

WebWorkerとUIスレッド間の通信では、イベントの一部のみがシリアル化され、argsで定義されたこれらのスレッド間でやり取りされる最適化が行われます。私はあなたの質問に使用するイベントバインディングのようなものが起こっていると仮定します。

+1

あなたの答えをありがとう。 dcodesmithが言及したように、同じコードはFirefoxでは動作しません。 –

+0

興味深い発見:Dは両方とも、クロムでは動作するが、FFでは動作しません。 –

関連する問題