Angular2 버전 이후를 기준으로 정리한 글입니다.
앵귤러의 데이터 바인딩은 컴포넌트와 뷰 사이에 연결 고리를 맺는 것이다.
앵귤러에는 데이터 흐름에 따라 크게 단방향 바인딩과 양방향 바인딩이 있고 단방향 바인딩의 경우 세부적으로 삽입식, 프로퍼티 바인딩, 이벤트 바인딩 존재 한다.
아래 그림은 DOM과 Componnent 사이에 앵귤러 데이터 바인딩을 설명한 것이다.
1. 삽입식(interpolation)
<div>{{userName}}</div> <p>{{getTitle()}}</p>
삽입식은 이중 중괄호 사이에 컴포넌트의 변수 혹은 함수를 넣으면 연산의 결과 문자열이 뷰에 반영된다.
삽입식에서는 오래 걸리는 연산이 존재하는 함수를 이용할 경우 심각한 성능 저하가 발생할 수 있기 때문에 주의해야 한다.
2. 프로퍼티 바인딩
<img [src]="imageUrl"> <h2 [textContent]="'Movie: ' + getTitle()"></h2>
3. 이벤트 바인딩
<input type="number" name="user-id" #userIdInput /> <button type="button" (click)="findUser(userIdInput.value)">검색</button>
이벤트 바인딩은 뷰에서 이벤트가 발생할 때 처리할 컴포넌트 로직을 바인딩 한다.
위의 예제에서는 button에서 클릭 이벤트가 발생할 때 findUser 함수를 실행하고 인자로 input 태그의 값을 전달하는 것을 확인할 수 있다.
4. 양방향 바인딩
<input [(ngModel)]="username"> <p>Hello {{username}}!</p>
양방향 바인딩은 뷰와 컴포넌트의 변화가 둘 중 한곳에서 일어나면 다른 한곳에서 데이터가 바인딩 되는 것이다.
양방향 바인딩을 사용하기 위해서는 위의 예제의 input 태그처럼 ngModel 지시자를 이용하면 손쉽게 적용할 수 있다.
p 태그에서 username을 속성 바인딩을 통해 출력하기 때문에 input에서 발생한 변경이 즉시 반영 되는것을 확인 할 수 있다.
앵귤러에서 양방향 바인딩은 ngModel 지시자 내부에서 프로퍼티 바인딩과 이벤트 바인딩의 단방향 바인딩을 이용하여 구현된 것이라고 한다.
'Angular' 카테고리의 다른 글
[Angular] Router 라우터 정리 (0) | 2017.08.06 |
---|---|
[Angular] Directive 지시자 정리 (0) | 2017.07.20 |