Directives - nkiateam/angular-tutorial GitHub Wiki

Angular๋Š” ํ…œํ”Œ๋ฆฟ์„ ๋ Œ๋”๋ง ํ•  ๋•Œ ์ง€์‹œ์–ด์— ๋”ฐ๋ผ DOM์„ ๋ณ€ํ™˜ํ•˜๋Š” ๋™์ ์ธ ๋ฐฉ์‹์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์‹œ๋ฌธ์€ Metadata๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
Typescript์—์„œ @Directive ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์ ์šฉํ•˜์—ฌ Metadata๋ฅผ ํด๋ž˜์Šค์— ์ฒจ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ๋Š” ๋™์ ์ธ ํ…œํ”Œ๋ฆฟ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
@Component ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” ์‹ค์ œ๋กœ ํ…œํ”Œ๋ฆฟ ์ง€ํ–ฅ๊ธฐ๋Šฅ์œผ๋กœ ํ™•์žฅ๋œ @Deirective ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.

Component๋Š” ๋™์ ์ธ ๋ฐฉ์‹์ด์ง€๋งŒ ์•„ํ‚คํ…์ฒ˜์˜ ๊ฐœ์š”๋Š” ๊ตฌ์„ฑ์š”์†Œ์™€ ์ง€์‹œ๋ฌธ์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ง€์‹œ์–ด๋Š” 2๊ฐ€์ง€์˜ ์ข…๋ฅ˜๋กœ ๊ตฌ์กฐ ์ง€์‹œ์ž์™€ ์†์„ฑ ์ง€์‹œ์ž๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค.
Attribute์ฒ˜๋Ÿผ ์—˜๋ฆฌ๋จผํŠธ ํƒœ๊ทธ ์•ˆ์— ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•˜๊ณ  ๋•Œ๋กœ๋Š” ์ด๋ฆ„์œผ๋กœ ํ‘œ์‹œ๋˜๊ธฐ๋„ ํ•˜์ง€๋งŒ
ํ• ๋‹น์ด๋‚˜ ๋ฐ”์ธ๋”ฉ์˜ ๋Œ€์ƒ์œผ๋กœ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ตฌ์กฐ ์ง€์‹œ๋ฌธ
  • DOM์˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€, ์ œ๊ฑฐ ๋ฐ ๊ต์ฒดํ•˜์—ฌ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์˜ˆ์ œ ํ…œํ”Œ๋ฆฟ์€ 2๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ง€์‹œ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

app/hero-list.component.html (structural)

<li *ngFor="let hero of heroes"></li><br>
<hero-detail *ngIf="selectedHero"></hero-detail>

ngFor - heroes๋ชฉ๋ก์—์„œ hero๋‹น ํ•˜๋‚˜์˜ <li>๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๋ช…๋ นํ•ฉ๋‹ˆ๋‹ค.
ngIf - ์„ ํƒ๋œ hero๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ HeroDetail์˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  1. ์†์„ฑ ์ง€์‹œ๋ฌธ
  • ๊ธฐ์กด ์š”์†Œ์˜ ๋ชจ์–‘ ๋˜๋Š” ๋™์ž‘์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ๋‚ด์—์„œ๋Š” ์ •๊ทœ HTML์†์„ฑ์ฒ˜๋Ÿผ ๋ณด์ด๋ฏ€๋กœ ์ž์ฒด๊ฐ€ ์ด๋ฆ„์ด ๋ฉ๋‹ˆ๋‹ค.
    ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์„ ๊ตฌํ˜„ํ•˜๋Š” ngModel ์ง€์ •๋ฌธ์€ ์†์„ฑ ์ง€์ •๋ฌธ์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.
    ngModel์€ ํ‘œ์‹œ ๊ฐ’ ์†์„ฑ์„ ์„ค์ •ํ•˜์—ฌ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ์— ์‘๋‹ตํ•˜์—ฌ ๊ธฐ์กด ์š”์†Œ(ex. <input">)์˜ ํ–‰๋™์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

app/hero-detail.component.html (ngModel)

<input [(ngModel)]="hero.name">

Angular์—๋Š” ๋ ˆ์ด์•„์›ƒ ๊ตฌ์กฐ(ex: ngSwitch)๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ DOM ์š”์†Œ ๋ฐ ๊ตฌ์„ฑ์š”์†Œ์˜ ์ธก๋ฉด(ex: ngStyle, ngClass)์„
์ˆ˜์ •ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ง€์‹œ๋ฌธ์ด ์ถ”๊ฐ€๋กœ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์‚ฌ์šฉ์ž ์ง€์ • ์ง€์‹œ์–ด๋„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
HeroListComponent์™€ ๊ฐ™์€ ๊ตฌ์„ฑ์š”์†Œ๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์ง€์‹œ๋ฌธ์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ