2017-05-08 4 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.

답변

1

당신은 역시 args를 지정해야합니다

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

체크 아웃 예를 Plunkr을 : https://embed.plnkr.co/eNXEdb/은 (콘솔이 다음 에 "안녕하세요 각도"을 열기를 클릭합니다).

+0

'event.preventDefault()'가 작동하지 않는 것 같습니다. 그리고 그것은'MouseEvent'입니다. 페이지 변경을 어떻게 멈출 수 있습니까? – Jeff

+0

@Jeff 네, 그것은'MouseEvent'입니다. * 클릭 한 것입니다. 너는 무엇을 막으려 고하는거야? 예를 들어 탐색을 유발하는 'a'클릭을 방지하기 위해 Plunkr을 업데이트했습니다. – jonrsharpe

+0

알았어요. 내 custom 지시어 앞에'routerLink' 지시어가 있고 그 결과로 우선 순위가 올라갔습니다. 당신의 도움을 주셔서 감사합니다! – Jeff

관련 문제