2017-05-08 8 views
1

私はpreventDefault()に特定のアンカー要素に適用する指示があります。私がやろうとしている何Angular 2要素をクリックしてイベントオブジェクトを取得する方法を教えてください。

import { Directive, ElementRef, HostListener } from '@angular/core'; 

@Directive({ 
    selector: '[myDirective]' 
}) 
export class myDirective { 

    constructor(private el: ElementRef) { } 

    @HostListener('click') onClick(event) { 
    event.preventDefault() // event is undefined 
    } 

} 

これはjQueryのでは基本的に次のとおりです。

$('[my-directive]').click(function (e) { 
    e.preventDefault(); 
}); 

どのように私は角度でこれを達成することができますか?私は角4.1を持っています。

@Directive({ 
    selector: '[myDirective]' 
}) 
export class MyDirective { 
    @HostListener('click', ['$event']) /* note args array */ 
    onClick(event) { 
    console.log(event); 
    event.preventDefault(); 
    } 
} 

はPlunkr例をチェックしてください:あなたは、あまりにも、argsを指定する必要が

答えて

1

https://embed.plnkr.co/eNXEdb/"こんにちは角度"をクリックして、コンソールを開きます)。

+0

'event.preventDefault()'は機能していないようです。それは 'MouseEvent'です。ページの変更を停止するにはどうすればよいですか? – Jeff

+0

@Jeffはい、それは 'MouseEvent'です。あなたは*をクリックしました。何を防止しようとしていますか?私はPlunkrを更新して、例えば「a」クリックがナビゲーションを引き起こすのを防ぐようにしました。 – jonrsharpe

+0

私は私のカスタムディレクティブの前に 'routerLink'ディレクティブを持っていて、その結果として優先されていました。ご協力いただきありがとうございます! – Jeff

関連する問題