ANgularJS 2.0+

[AngularJS 2.0] AngularJS 2.0 Tutorial2_service

k9e4h 2016. 9. 19. 14:42

Angular.io 에서 제공하는 튜토리얼을 정리한 것입니다.

사진 클릭시 튜토리얼로 이동

!! RC4기준 !!

5. Service


1. 폴더 구조


2. Chapter4의 issue


- hero를 정의하는 것은 컴포넌트의 일이 아니다.

- 공유하기가 쉽지 않다.



new 키워드를 대체하기 위하여

private property를 정의하기 위해 constructor를 추가.

constructor를 사용하기 위하여 컴포넌트에 provider 사용.


3. app.component.ts

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
32
33
34
35
36
import { Component, OnInit } from '@angular/core';
import { Hero } from './hero';
import { HeroDetailComponent } from './hero-detail.component';
import { HeroService } from './hero.service';
 
 
@Component({
    selector: 'my-app',
    template:
    '<h1>{{title}}</h1>'+
    '<h2>My Heroes</h2>'+
    '<ul class="heroes">'+
    '  <li *ngFor="let hero of heroes"'+
    '    [class.selected]="hero === selectedHero"'+
    '    (click)="onSelect(hero)">'+
    '    <span class="badge">{{hero.id}}</span> {{hero.name}}'+
    '  </li>'+
    '</ul>'+
    '<my-hero-detail [hero]="selectedHero"></my-hero-detail>',
    directives:[HeroDetailComponent],
    providers:[HeroService]
})
 
export class AppComponent implements OnInit {
    title = 'Tour of Heroes';
    heroes: Hero[];
    selectedHero: Hero;
    constructor(private heroService: HeroService) { }
    getHeroes() {
        this.heroService.getHeroes().then(heroes => this.heroes = heroes);
    }
    ngOnInit() {
        this.getHeroes();
    }
    onSelect(hero: Hero) { this.selectedHero = hero; }
}
cs

 

[line 21] Provider : Component에서 사용할 의존성을 알려줌

[line 28] constructor에 파라미터로 의존성 만들기

[line 32] ngOnInit : 컴포넌트의 생명 주기 동안 Angular에서 자동 호출 


4. hero.service.ts

1
2
3
4
5
6
7
8
9
import { Injectable } from '@angular/core';
import { Hero } from './hero';
import { HEROES } from './mock-heroes';
@Injectable()
export class HeroService {
    getHeroes() {
        return Promise.resolve(HEROES);
    }
}
cs


[line 7] Promise : 지켜보다가 정보가 나타나면 얘기해줌, HTTP 요청관리

 then : promise 객체의 callback function 지정


5. mock-heroes.ts

1
2
3
4
5
6
7
8
9
10
11
12
13
import { Hero } from './hero';
export const HEROES: Hero[] = [
    {id: 11, name: 'Mr. Nice'},
    {id: 12, name: 'Narco'},
    {id: 13, name: 'Bombasto'},
    {id: 14, name: 'Celeritas'},
    {id: 15, name: 'Magneta'},
    {id: 16, name: 'RubberMan'},
    {id: 17, name: 'Dynama'},
    {id: 18, name: 'Dr IQ'},
    {id: 19, name: 'Magma'},
    {id: 20, name: 'Tornado'}
];
cs


6. 정리


Service는 전체 Application에서 공유하고, DI를 통하여 객체를 전달한다.

반응형