티스토리 뷰
시작하기 전에 npm start를 띄어놓고 시작합니다. Anguar 2 시작하기에서 봤듯이 저렇게 해놓으면 TypeScript 코드가 변경되면 자동으로 re-compile해서 화면에 뿌려줍니다.
그러면 코딩을 시작해봅시다.
1. 우선 app.component.ts 를 아래와 같이 수정합니다.
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: '<h1>{{title}}</h1><h2>{{hero}} details!</h2>'
})
export class AppComponent {
title = 'Tour of Heroes';
hero = 'windstorm';
}
. 클래스에 title과 hero 변수를 선언하고 값을 할당합니다.
. template을 변경해줍니다. 클래스에 선언했던 변수들을 중괄호 두겹({{}})으로 묶어주시면 됩니다.
. 화면을 보고 계신가요? 변수가 그대로 화면에 나타나는 것을 볼 수 있습니다. 이렇게 변수를 선언하고 화면의 {{}}에 뿌려지는 것을 data binding이라고 합니다.
2. app.component.ts 를 다시 아래와 같이 수정합니다.
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: '<h1>{{title}}</h1><h2>{{hero.name}} details!</h2>'
})
export class AppComponent {
title = 'Tour of Heroes';
hero: Hero = {
id: 1,
name: 'windstorm'
};
}
export class Hero {
id: number;
name: string;
}
. 클래스 Hero를 하나 더 추가 했습니다. 클래스는 number인 id와 string인 name이 있습니다. TypeScript에서는 이렇게 "변수명: 타입명;" 과 같이 선언을 합니다. TypeScript에서는 JavaScript에서 관리하지 않는 Type을 관리합니다.
. AppComponent 클래스에서 hero의 타입을 Hero 클래스 타입으로 변경합니다. 그리고 JavaScript 오브젝트 형식으로 값을 할당합니다.
. template에서는 {{Object명.변수명}}을 통해 data binding이 가능합니다.
3. 만약 Component 내에 template을 여러줄로 작성하실 경우는 '(콜론 옆에) 대신 `(숫자1옆에)로 감싸주면 됩니다.
template:`
<h1>{{title}}</h1>
<h2>{{hero.name}} details!</h2>
<div><label>id: </label>{{hero.id}}</div>
<div>
<label>name: </label>
<input value="{{hero.name}}" placeholder="name">
</div>
`
. 지금 화면에서 name 값을 수정해봅시다. 그러면 h2의 {{hero.name}}은 바뀌지 않습니다.
. 위와 같이 {{}}로 감싸는 것을 one-way binding이라고 합니다. 클래스의 변수가 변경되면 화면에 반영 되지만, 반대로 화면에 값을 수정한다고 해서 그게 클래스의 값이 바뀌는건 아닙니다.
4. Two-way binding을 위해 아래와 같이 template을 수정해봅시다.
template:`
<h1>{{title}}</h1>
<h2>{{hero.name}} details!</h2>
<div><label>id: </label>{{hero.id}}</div>
<div>
<label>name: </label>
<input placeholder="name" [(ngModel)]="hero.name">
</div>
`
. 지금 화면에서 name을 수정하면 h2 태그의 값도 자동으로 변경됩니다.
. [(ngModel)]="변수명" 으로 할 경우 two-way binding이 됩니다. 이 경우 화면의 값을 바꾸면 그 즉시 클래스의 값도 변경됩니다. 따라서 값이 바뀌었기 때문에 one-way binding 된 {{hero.name}}도 바뀌게 됩니다.
여기까지 간단하게 Data Binding에 대해서 알아봤습니다. 설명은 공식 홈페이지에 가시면 더욱더 잘되어 있습니다.
오늘 포스팅은 너무 간단했네요. 원래는 Spring 쪽을 하려다가 예상외로 시간이 많이 걸려서 간단하게 Angular 2 쪽으로 하나 포스팅 했습니다. 1일 1포스팅.
출처
Angular 2 공식홈페이지 - tutorial - 2. The Hero Editor : https://angular.io/docs/ts/latest/tutorial/toh-pt1.html
'Javascript > Angular' 카테고리의 다른 글
| 5-1. Routing 기초 - 1 (0) | 2016.06.19 |
|---|---|
| 4. Service 만들기 (0) | 2016.06.17 |
| 3. 파일 나누기, Component 나누기 (1) | 2016.06.15 |
| 2. 기본적인 Directive 맛보기 (1) | 2016.06.13 |
| 0. Angular 2 시작하기 (0) | 2016.06.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 빠른 정렬
- 기내반입유모차
- CURL
- 유아동겸용
- rest login
- Ajax
- TypeScript
- 머지소트
- 알고리즘
- 티지유모차
- angular 2
- routerLink
- styleUrls
- 어드보케이트
- Spring Boot
- mockmvc
- angular
- templateUrl
- test static import
- angular2
- 거품정렬
- routeParams
- insert sort
- RouteConfig
- controller test
- router-outlet
- spring security
- routing
- 타보유모차
- mybatis
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함