Directives - nkiateam/angular-tutorial GitHub Wiki
Angular๋ ํ ํ๋ฆฟ์ ๋ ๋๋ง ํ ๋ ์ง์์ด์ ๋ฐ๋ผ DOM์ ๋ณํํ๋ ๋์ ์ธ ๋ฐฉ์์ ๊ฐ๊ณ ์์ต๋๋ค.
์ง์๋ฌธ์ Metadata๋ฅผ ๊ฐ๊ณ ์๋ ํด๋์ค์
๋๋ค.
Typescript์์ @Directive ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ ์ฉํ์ฌ Metadata๋ฅผ ํด๋์ค์ ์ฒจ๋ถํฉ๋๋ค.
์ปดํฌ๋ํธ๋ ๋์ ์ธ ํ
ํ๋ฆฟ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
@Component ๋ฐ์ฝ๋ ์ดํฐ๋ ์ค์ ๋ก ํ
ํ๋ฆฟ ์งํฅ๊ธฐ๋ฅ์ผ๋ก ํ์ฅ๋ @Deirective ๋ฐ์ฝ๋ ์ดํฐ์
๋๋ค.
Component๋ ๋์ ์ธ ๋ฐฉ์์ด์ง๋ง ์ํคํ ์ฒ์ ๊ฐ์๋ ๊ตฌ์ฑ์์์ ์ง์๋ฌธ์ ๊ตฌ๋ถํฉ๋๋ค.
์ง์์ด๋ 2๊ฐ์ง์ ์ข
๋ฅ๋ก ๊ตฌ์กฐ ์ง์์์ ์์ฑ ์ง์์๋ก ๋ถ๋ฅ๋ฉ๋๋ค.
Attribute์ฒ๋ผ ์๋ฆฌ๋จผํธ ํ๊ทธ ์์ ์ฌ์ฉ๋๊ธฐ๋ ํ๊ณ ๋๋ก๋ ์ด๋ฆ์ผ๋ก ํ์๋๊ธฐ๋ ํ์ง๋ง
ํ ๋น์ด๋ ๋ฐ์ธ๋ฉ์ ๋์์ผ๋ก ์์ฃผ ๋ฑ์ฅํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
- ๊ตฌ์กฐ ์ง์๋ฌธ
- 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์ ๊ตฌ์ฑ์์๊ฐ ํฌํจ๋ฉ๋๋ค.
- ์์ฑ ์ง์๋ฌธ
- ๊ธฐ์กด ์์์ ๋ชจ์ ๋๋ ๋์์ ๋ณ๊ฒฝํฉ๋๋ค. ํ
ํ๋ฆฟ ๋ด์์๋ ์ ๊ท HTML์์ฑ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก ์์ฒด๊ฐ ์ด๋ฆ์ด ๋ฉ๋๋ค.
์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๊ตฌํํ๋ ngModel ์ง์ ๋ฌธ์ ์์ฑ ์ง์ ๋ฌธ์ ์์ ์ ๋๋ค.
ngModel์ ํ์ ๊ฐ ์์ฑ์ ์ค์ ํ์ฌ ๋ณ๊ฒฝ ์ด๋ฒคํธ์ ์๋ตํ์ฌ ๊ธฐ์กด ์์(ex. <input">)์ ํ๋์ ๋ณ๊ฒฝํฉ๋๋ค.
app/hero-detail.component.html (ngModel)
<input [(ngModel)]="hero.name">
Angular์๋ ๋ ์ด์์ ๊ตฌ์กฐ(ex: ngSwitch)๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ DOM ์์ ๋ฐ ๊ตฌ์ฑ์์์ ์ธก๋ฉด(ex: ngStyle, ngClass)์
์์ ํ๋ ๋ช ๊ฐ์ง ์ง์๋ฌธ์ด ์ถ๊ฐ๋ก ์์ต๋๋ค.
๋ฌผ๋ก ์ฌ์ฉ์ ์ง์ ์ง์์ด๋ ์์ฑํ ์ ์์ต๋๋ค.
HeroListComponent์ ๊ฐ์ ๊ตฌ์ฑ์์๋ ์ฌ์ฉ์ ์ง์ ์ง์๋ฌธ์ ํ ์ข
๋ฅ์
๋๋ค.