본문 바로가기

Angular.js

Angular.js Attribute Directives

Directive에는 3가지 종류가 있다 

 

   ● Component Directive

 

   ● Structural Directive

 

   √  Attribute Directive 

 

 

Component Directive 는 우리가 흔히 아는 component 이고,

 

Structural Directive 는  ngIf ngFor 등이 있다. 이들은 조건 등에 따라 view 의 구조를 바꾸게 된다.

 

Attribute Directive 는 흔히 element의 속성을 바꿔준다. 예를들자면 NgStyle라는 디렉티브를 이용한다면 여러개의 스타일요소를 한번에 탑재시킬 수 있다.

============================================================================

 

   > 이번 게시글에서는 Attribute Directive를 실습해보도록 하겠다.

 

Dirctive는 @Directive라는 어노테이션을 갖는 디렉티브를 조정하는 클래스로 만들어진다. 이 내부엔 속성을 정의하는  selector가  있다.

이 클래스는 원하던 디렉티브 행위가 구현되어있다.

 

 1. ng generate directie practice로 클래스 파일을 만들어보자.  (  이후 컴포넌트를 작성한 것과 동일하게 app.moudle에 작성해준다.

 

 2. 내부에 있는 @Directive의 작성 내용인 metadata들이 controller클래스에 들어온다.

 3. 그리고 ElementRef를 생성자에서 사용하여 

     reference 를 Host(선택된)  DOM Element 에게 주입 (injection) 시킨다.

   3-1)  또한 HostDOM 에게의 direct access을 권한을 준다.  

           우리는 이 직접 접속을 el.nativeElement 으로 할수있게 되었다.

highlight.directive.ts
import { Directive,ElementRef  } from '@angular/core';

@Directive({
  selector: '[appHighlight]'   //hightlight 라는 셀렉터가 이미 있으므로
})
export class HighlightDirective {
  constructor( el: ElementRef)) { 
    el.nativeElement.style.backgroundColor =  ' yello '};
  }
}

4. 우리는 이제 HTML 에서 이 디렉티브를 사용하여 스타일을 만들어 낼 수 있다.

 

 < p appHighLight > 노란 배경이 될것입니다. </appHighLight>

 

============================================================================

 

  > 사용자 선택에 따라 바뀌는 디렉티브 생성 

 @HostListner(' mouseenter' ) orMouseEnter(){

   this.highlight('yello');   // 생성자에 적혀있는 el: elementRef을  사용한 함수를 만들어서
                              // 필요할때 디렉티브를 사용할 것이다.
}

 highlight( color  : string) {
 	el.nativeElement.  style. backgroundColor = color;
 }

 

'Angular.js' 카테고리의 다른 글

변수명 뒤에 물음표(?) 와 달러 ($) 표시  (0) 2020.07.09
Angular.js Observable  (0) 2020.07.08
Input 태그 관련한 기술  (0) 2020.07.08
컴포넌트 간 통신  (0) 2020.07.07
Angular Routing  (0) 2020.07.07