정리하기/JS 관련
[Angular] HostListener vs HostBinding
내가송
2017. 5. 15. 17:37
반응형
Angular에서는 view의 DOM에 대한 내용을 처리하는 Directive라는 개념이 있다.
Angular가 기본적으로 제공되는 directive도 있으며,
사용자가 필요에 따라 커스텀하게 만들 수 있다.
이 포스팅에서는 기본 제공되는 여러 directive 중
@HostListener와 @HostBinding에 대해 비교해보려 한다.
(왜냐면 내가 헷갈렸기 때문이다ㅠ)
결과적으로 보면 이름은 비슷한데,
하는 내용은 완전히 다르다.
예시를 각각 보면서 확인해보자.
HostListener 예시
@HostListener('click', ['$event.target'])
onClick(target) {
console.log('click!', target);
}
HostListener 디렉티브는
첫번째 parameter로는 이벤트명을 받고
두번째 parameter는 이벤트 타겟을 받는다. (생략 가능)
예시에서 볼 수 있듯이 HostListener는
이벤트 핸들링과 관련된 디렉티브다.
위의 예시는
클릭 이벤트에 대한 이벤트 핸들링을 해주는 예시인 것이다.
HostBinding 예시
@HostBinding('class.valid') get valid() {
return this.control.valid;
}
HostBinding 디렉티브는
첫번째 parameter로 element의 속성 값을 받는다. (생략 가능)
Angular에서는 자동적으로 element의 속성 값의 변화를 자동적으로 감지하고 있다.
@HostBinding은 지정된 속성 값이 바뀌면
해당 element를 업데이트해주는 역할을 한다.
즉, 위의 예시는
해당 컴포넌트에 대해 valid 라는 클래스가 있으면
this.control.valid 값을 리턴해주는 내용의 예시인 것이다.
반응형