template: `
{{ title }}
`
===== 단방향 바인딩 =====
{{ title }}
* [attr.aria-label]
* 특성 바인딩
* 알려진 속성이 아닌 경우에는 이 방식을 사용
* [class.btn]
* 클래스 속성 바인딩
* [style.color],[style.background]="'#C0FFEE'"
* 스타일 속성 바인딩
===== 속성바인딩과 이벤트 바인딩 =====
==== Property Binding ====
{{ title }}
안녕하세요. {{ name }}님.
{{ description }}
==== Event Binding ====
$event.target.value ==> 이벤트를 발생시킨 놈의 value속성
=== keyup 이벤트가 발생할 때 생성되는 이벤트 객체($event)를 컴포넌트의 이벤트 핸들러로 전달하려면 다음과 같이 작성합니다. ===
{{values}}
export class KeyUpComponent_v1 {
values = '';
onKey(event: any) { // without type info
this.values += event.target.value + ' | ';
}
}
== event.target.value 대신 event.key를 사용하면 어떤 키가 입력되었는지 확인할 수도 있습니다: ==
=== $event 객체의 타입 ===
export class KeyUpComponent_v1 {
values = '';
<<<<<<< HEAD
onKey(event: KeyboardEvent) { // 타입을 지정한 경우
this.values += (event.target).value + ' | ';
=======
onKey(event: KeyboardEvent) { // with type info
this.values += (event.target as HTMLInputElement).value + ' | ';
>>>>>>> ae0253f34adad0e37d2a5e6596a08aa049ba3072
}
}
=== loop-back ===
@Component({
selector: 'app-loop-back',
template: `
{{box.value}}
`
})
export class LoopbackComponent { }
==== 키 입력 필터링 (key.enter) ====
(keyup) 이벤트 바인딩은 모든 키 입력에 반응합니다. 하지만 사용자가 입력을 끝내는 엔터 키 에만 반응하고 싶다면, 키 이벤트를 바인딩 할 때 $event.keyCode를 사용해서 엔터 키 만 반응하도록 필터링할 수 있습니다.
이 때 Angular는 좀 더 간단한 문법을 제공합니다. 템플릿에서 keyup.enter라고 바인딩하면 엔터키가 입력되었을 떄만 이벤트 핸들러를 실행할 수 있습니다.
@Component({
selector: 'app-key-up3',
template: `
{{value}}
`
})
export class KeyUpComponent_v3 {
value = '';
onEnter(value: string) { this.value = value; }
}
==== 포커스를 잃을 때 ====
{{value}}
export class KeyUpComponent_v4 {
value = '';
update(value: string) { this.value = value; }
}
===== ngModel과 Two-Way 데이터 바인딩 =====
* FormsModule에 들어있는 기본 제공 디렉티브
* AppModule에 등록필요
* 바인딩 전: 반드시 name특성 필요
*
* 단방향 바인딩
*
* 양방향 바인딩: [()]표현식 사용, 박스에 든 바나나?
*
*