개요: 컴포넌트 전체에 직접 클래스 바인딩 해서 디자인을 변경하는 상황이 생김
angular에선 @HostBinding() 데코레이터를 이용하여, 해당 컴포넌트(host 요소)에 직접 클래스를 바인딩 할 수 있다.
사용법
1. 아래와 같이 HostBinding 을 이용해 해당 컴포넌트에 class를 변수를 통해 추가하거나 제거할 수 있다.(isExpanded가 true면 expanded 라는 클래스 추가, false면 expanded 클래스 제거)
// 예시
// 아래 코드는, isExpanded 라는 변수가 true가 될때, expanded가 클래스가 추가가 되는 코드.
@HostBinding('class.expanded')
get activeClass() {
return this.isExpanded;
}
2. class가 추가가 되었을 때 사용 할 css 제작
:host { // host는 현재 컴포넌트 자체를 말함 예를들어서, <my-app></my-app> 에게 직접 css를 먹이고 싶을때엔, :host로 가능.
&.expanded { // expanded라는 class에 css요소 추가
overflow: hidden;
}
}
위 작업이 어떤게 편의하냐면,
예를들어,
<my-app></my-app>에 디자인을 첨가하고 싶다면 기존 방법은 이렇게 해결을 해왔다.
< class="expanded" my-app></my-app>
<!-- 거기에 조건부 class를 생성하자면 [ngClass]를 이용하기도 하고, 부모요소에서 css를 다뤄야 하기 때문에 보기 번잡 -->
하지만 @HostBinding() 데코레이터를 이용하면, 해당 컴포넌트에 직접 조건부 클래스를 이용할 수 있다!
'Angular.js' 카테고리의 다른 글
[Angular.js] 삼성인터넷 scrollIntoView() (1) | 2025.02.11 |
---|---|
바인딩 된 변수가 변화를 감지하지 못할때 (0) | 2024.09.10 |
[angular.js] 화면에서 div가 안보일때 동작하는 directive 기능 제작 (0) | 2024.06.26 |
[Angular.js] base64데이터를 blob으로 변환 후, xlsx 파일로 다운로드 받기 (0) | 2024.06.26 |
[Angular.js] MVVM 패턴 (0) | 2024.06.05 |
댓글