Services - nkiateam/angular-tutorial GitHub Wiki

service

ServiceλŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν•„μš”ν•œ κ°’, ν•¨μˆ˜λ“±μ„ κ²°ν•©ν•œ 것을 μ˜λ―Έν•©λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ 것듀은 μ„œλΉ„μŠ€ λŒ€μƒμ΄ 될 수 μžˆμŠ΅λ‹ˆλ‹€. μ„œλΉ„μŠ€λŠ” μ „ν†΅μ μœΌλ‘œ 잘 μ •μ˜λœ λͺ©μ μ„ 가진 클래슀이며 νŠΉμ •ν•œ 일을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. μ„œλΉ„μŠ€λ₯Ό μœ„ν•΄ Angular에 λͺ…μ‹œν•΄μ•Ό 할것은 μ—†μŠ΅λ‹ˆλ‹€. AngularλŠ” μ„œλΉ„μŠ€μ˜ μ •μ˜λ₯Ό 가지고 μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ„œλΉ„μŠ€μ˜ κΈ°λ³Έ ν΄λž˜μŠ€λ„ μ—†κ³ , μ„œλΉ„μŠ€λ₯Ό 등둝해야할 μž₯μ†Œλ„ μ—†μŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ Angular μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ„œλΉ„μŠ€λŠ” μ£Όμš”ν•œ μš”μ†Œμž…λ‹ˆλ‹€. ComponentλŠ” μ„œλΉ„μŠ€μ˜ μ€‘μš”ν•œ μ†ŒλΉ„μžμž…λ‹ˆλ‹€.

λ‹€μŒμ€ λΈŒλΌμš°μ € μ½˜μ†”μ— 둜그λ₯Ό 좜λ ₯ν•˜λŠ” μ„œλΉ„μŠ€μ˜ μ˜ˆμ‹œμž…λ‹ˆλ‹€.

app.logger.service.ts(class)

export class Logger {
  log(msg: any)   { console.log(msg); }
  error(msg: any) { console.error(msg); }
  warn(msg: any)  { console.warn(msg); }
}

HeroSerivceλŠ” νžˆμ–΄λ‘œλ“€μ„ 가지고 μ™€μ„œ 리턴을 ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. HeroServiceλŠ” Logger μ„œλΉ„μŠ€μ™€ 또 λ‹€λ₯Έ μ„œλ²„ 톡신을 μ²˜λ¦¬ν•˜λŠ” BackendService와 μ—°κ΄€λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

app.hero.service.ts(class)

export class HeroService {
  private heroes: Hero[] = [];

  constructor(
    private backend: BackendService,
    private logger: Logger) { }

  getHeroes() {
    this.backend.getAll(Hero).then( (heroes: Hero[]) => {
      this.logger.log(`Fetched ${heroes.length} heroes.`);
      this.heroes.push(...heroes); // fill cache
    });
    return this.heroes;
  }
}

μ„œλΉ„μŠ€λŠ” 어디든지 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈ ν΄λž˜μŠ€λŠ” μ˜μ‘΄μ μž…λ‹ˆλ‹€. 그듀은 μ„œλ²„λ‘œλΆ€ν„° 데이터λ₯Ό νŒ¨μΉ˜ν•  수 μ—†κ³ , μœ μ € μž…λ ₯을 검사할 수 μ—†μœΌλ©° μ½˜μ†”μ— 둜그λ₯Ό 찍지 μ•ŠμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μž‘μ—…λ“€μ„ μ„œλΉ„μŠ€μ— μœ„μž„ν•©λ‹ˆλ‹€.

μ»΄ν¬λ„ŒνŠΈμ˜ μž‘μ—…μ€ μœ μ € κ²½ν—˜μ„ ν™œμ„±ν™”ν•˜κ±°λ‚˜ μ•„λ‹μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈλŠ” view와 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ λ‘œμ§κ°„μ˜ μ€‘κ°œμžμž…λ‹ˆλ‹€. 쒋은 μ»΄ν¬λ„ŒνŠΈλŠ” ν”„λ‘œνΌν‹°μ˜ ν‘œν˜„κ³Ό 데이터 바인딩을 μœ„ν•΄μ„œλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€. λ‚˜λ¨Έμ§€ λͺ¨λ“  것듀은 μ„œλΉ„μŠ€μ— μœ„μž„ν•©λ‹ˆλ‹€.

AngularλŠ” μ΄λŸ¬ν•œ 원칙을 κ°•μš”ν•˜μ§„ μ•ŠμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 그렇지 μ•ŠμœΌλ©΄ 3000μ€„μ§œλ¦¬ μ»΄ν¬λ„ŒνŠΈκ°€ 생길 κ²ƒμž…λ‹ˆλ‹€.