ããŒã1 ããŒã2 ããŒã3 ããŒã4
ãã£ãšããŒããŒãå¿
èŠ
ç§ãã¡ã®ç©èªã«ã¯ãã£ãšå€ãã®ããŒããŒãå¿
èŠã§ãã Heroes Tourã¢ããªã±ãŒã·ã§ã³ãå±éããŠããŠãŒã¶ãŒãããŒããŒãéžæãã圌ã«é¢ãã詳现æ
å ±ã衚瀺ã§ããããŒããŒã®ãªã¹ãã衚瀺ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããããŒã2
ããŒããŒã®ãªã¹ãã衚瀺ããããã«å¿
èŠãªãã®ã«ã€ããŠèããŠã¿ãŸãããã ãŸãã衚瀺ããããŒããŒã®ãªã¹ããå«ãé
åãå¿
èŠã§ãã æ¬¡ã«ãé
åãããã³ãã¬ãŒãã«ããŒã¿ãæž¡ãæ¹æ³ãå¿
èŠã§ãã
ç§ãã¡ãæ³ãŸã£ãå Žæ
2çªç®ã®ããŒããŒãã¢ãŒã«é²ãåã«ã æåã®ããŒããå®äºããå¿
èŠããããŸãã ãŸã è¡ã£ãŠããªãå Žåã¯ãæ»ã£ãŠãã ããã
ã³ãŒã倿ãšã¢ããªã±ãŒã·ã§ã³å®è¡ããµããŒã
TypeScriptã³ã³ãã€ã©ãå®è¡ããŠããã¡ã€ã«ã®å€æŽãç£èŠããããã«ã³ã³ãã€ã«ããWebãµãŒããŒãèµ·åããããã«ããŸãã å
¥åããããšã§ãããè¡ããŸã
npm start 
ããã«ãããããŒããŒãã¢ãŒã®äœæãç¶ç¶ããŠããéãã¢ããªã±ãŒã·ã§ã³ãå®è¡ããç¶ããŸãã
ããŒããŒã®å±ç€º
ããŒããŒäœæ
app.component.tsã®äžéšã«10人ã®ããŒããŒã®é
åãäœæããŠã¿ãŸãããã
app.component.tsïŒããŒããŒã®é
åïŒ
  let 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" } ]; 
HEROESã¯ãæåã®ããŒãã§äœæããã¯ã©ã¹ã§ããHeroã¿ã€ãã®èŠçŽ ã®é
åã§ãã ãã¡ããããã®ããŒããŒã®ãªã¹ããWebãµãŒãã¹ããååŸãããã®ã§ãããå°ããªã¹ããããèžãã§ãæåã«ã¢ãã¯ãªããžã§ã¯ãïŒä»¥åã«æå®ãããããŒã¿ãè¿ãã¹ã¿ãïŒããããŒããŒã衚瀺ããŸãã
ããŒããŒã®è¡šçŸ
ãã€ã³ãããããŒããŒã®ãœãŒã¹ãšãªãããããã£ãAppComponentäœæããŸãããã
app.component.tsïŒããããã£-ããŒããŒã®é
åïŒ
  public heroes = HEROES; 
heroesã®ã¿ã€ããæç€ºçã«å®çŸ©ããå¿
èŠã¯ãããŸããã TypeScriptã¯HEROES倿°ããååŸã§ããŸãã
ããã§ããã®ã³ã³ããŒãã³ãã¯ã©ã¹ã§ããŒããŒã®ãªã¹ããå®çŸ©ã§ããŸãã ããããæçµçã«ã¯WebãµãŒãã¹ããããŒããŒãååŸããããšãç¥ã£ãŠããŸãã ãããã£ãŠããã®ããŒã¿ãã¯ã©ã¹å®è£
ããããã«åŒãåºãããšã¯çã«ããªã£ãŠããŸãã
ãã³ãã¬ãŒãã«ããŒããŒã衚瀺ãã
ã³ã³ããŒãã³ãã«ã¯heroesãå«ãŸããŠããŸãã ãã³ãã¬ãŒãã«é äžåãªã¹ããäœæããŠè¡šç€ºããŠã¿ãŸãããã ããŒããŒã«é¢ãã詳现æ
å ±ã®äžã®èŠåºãã®äžã«ã次ã®HTMLãæ¿å
¥ããŸãã
app.component.tsïŒããŒããŒãã³ãã¬ãŒãïŒ
  <h2>My Heroes</h2> <ul class="heroes"> <li>  </li> </ul> 
ããã§ãããŒããŒãå
¥åã§ãããã³ãã¬ãŒããã§ããŸããã
ngForã§ããŒããŒããªã¹ããã
ã³ã³ããŒãã³ãå
ã®ããŒããŒã®é
åããã³ãã¬ãŒãã«é¢é£ä»ãããããå埩åŠçããåããŒããŒãåå¥ã«è¡šç€ºããããšæããŸãã ãããè¡ãã«ã¯ãAngularã®å©ããå¿
èŠã§ãã ã¹ããããã€ã¹ãããã§å§ããŸãããïŒ
æåã«ãçµã¿èŸŒã¿*ngForãã£ã¬ã¯ãã£ãã远å ããŠ<li>倿ŽããŸãã
app.component.tsïŒngForïŒ
  <li *ngFor="#hero of heroes"> 
* ngFor`ã®) ã®å
é ã®ã¢ã¹ã¿ãªã¹ã¯ïŒ ` ) ã¯ãæ§æã®éèŠãªéšåã§ãã**
ngForã®*ãã¬ãã£ãã¯ã¹ã¯ã <li>èŠçŽ ãšãã®åããã¹ã¿ãŒãã³ãã¬ãŒããæ§æããããšã瀺ããŸãã
ngForãã£ã¬ã¯ãã£ãã¯heroesé
åãééããŠã AppComponent.heroesããããã£ãè¿ãããã³ãã¬ãŒãã«è¡šç€ºããŸãã
ngForã«ãã£ãŠå²ãåœãŠãããåŒçšããã¹ãã¯ãã heroesé
åã®åããŒããŒãååŸããããŒã«ã«å€æ°heroã«ä¿åãã察å¿ãããã³ãã¬ãŒãã€ã³ã¹ã¿ã³ã¹ã§äœ¿çšã§ããããã«ãããããšãæå³ããŸãã
heroåã®ãã¬ãã£ãã¯ã¹#ã¯ãããŒããŒãããŒã«ã«ãã³ãã¬ãŒã倿°ãšããŠèå¥ããŸãã æ¬¡ã«ããã³ãã¬ãŒãã§ãã®å€æ°ãåç
§ããŠãããŒããŒã®ããããã£ã«ã¢ã¯ã»ã¹ã§ããŸãã
ngForããã³ããŒã«ã«ãã³ãã¬ãŒã倿°ã®è©³çްã«ã€ããŠã¯ã ããŒã¿ãããã³ã°ããã³ãã³ãã¬ãŒãæ§æã®ç« ãngForãã ããã
ããã§ã <li>ã¿ã°ã®éã«ã³ãŒããæ¿å
¥ããŸãããã®ã³ãŒãã¯ã heroãã³ãã¬ãŒã倿°ã䜿çšããŠheroã®ããããã£ã衚瀺ããŸãã
app.component.tsïŒngForãã³ãã¬ãŒãïŒ
  <li *ngFor="#hero of heroes"> <span class="badge">{{hero.id}}</span> {{hero.name}} </li> 
ãã©ãŠã¶ãããŒãžãæŽæ°ãããšãããŒããŒã®ãªã¹ãã衚瀺ãããŸãïŒ
ããŒããŒã«ã¹ã¿ã€ã«ã远å ãã
ããŒããŒã®ãªã¹ãã¯ããªãéå±ã«èŠããŸãã ã©ã®ããŒããŒãéžæãããã«ãŒãœã«ãçŸåšã©ã®ããŒããŒã®äžã«ãããããŠãŒã¶ãŒãçè§£ã§ããããã«ããŠãŒã¶ãŒã«èŠèŠçã«ããããããããããšæããŸãã
ã³ã³ããŒãã³ãã«ã¹ã¿ã€ã«ã远å ããŸãããã æ¬¡ã®CSSã¯ã©ã¹ã@Componentãã³ã¬ãŒã¿ãŒã®stylesããããã£ã«å²ãåœãŠãŸãã
app.component.tsïŒã¹ã¿ã€ã«ã®è¿œå ïŒ
  styles:[` .selected { background-color: #CFD8DC !important; color: white; } .heroes { margin: 0 0 2em 0; list-style-type: none; padding: 0; width: 15em; } .heroes li { cursor: pointer; position: relative; left: 0; background-color: #EEE; margin: .5em; padding: .3em 0; height: 1.6em; border-radius: 4px; } .heroes li.selected:hover { background-color: #BBD8DC !important; color: white; } .heroes li:hover { color: #607D8B; background-color: #DDD; left: .1em; } .heroes .text { position: relative; top: -3px; } .heroes .badge { display: inline-block; font-size: small; color: white; padding: 0.8em 0.7em 0 0.7em; background-color: #607D8B; line-height: 1em; position: relative; left: -1px; top: -4px; height: 1.8em; margin-right: .8em; border-radius: 4px 0 0 4px; } `] 
é·ãæååã®è€æ°è¡è¡šçŸã«ã¯ãåã³ `-notationã䜿çšããããšã«æ³šæããŠãã ããã
ã³ã³ããŒãã³ãã«ã¹ã¿ã€ã«ãå²ãåœãŠããšãã¹ã¿ã€ã«ã¯ãã®ç¹å®ã®ã³ã³ããŒãã³ãã®ã¹ã³ãŒãå
ã«ã®ã¿ååšããŸãã ãããã£ãŠãã¹ã¿ã€ã«ã¯AppComponentã®ã¿é©çšãããå€éšHTMLã«ãæŒãããããšã¯ãããŸããã
ããŒããŒã衚瀺ããããã®ãã³ãã¬ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
app.component.tsïŒããŒããŒã®ã¹ã¿ã€ã«ïŒ
  <h2>My Heroes</h2> <ul class="heroes"> <li *ngFor="#hero of heroes"> <span class="badge">{{hero.id}}</span> {{hero.name}} </li> </ul> 
ããããã®ã¹ã¿ã€ã«ïŒ ããã«ç€ºãããã«ãããããã³ã³ããŒãã³ãã®èª¬æã«å«ããããå¥ã®ãã¡ã€ã«ã«ç§»åããŠãã³ã³ããŒãã³ãã³ãŒãã簡玠åããŸãã ããã¯æ¬¡ã®ç« ã§è¡ããŸãã ãšããããããã®ãŸãŸã«ããŠãããŸãããã
ããŒããŒã»ã¬ã¯ã·ã§ã³
ãã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãããŒããŒã®ãªã¹ããš1人ã®ããŒããŒã«é¢ããæ
å ±ããããŸãã ããŒããŒã®ãªã¹ããš1人ã®ããŒããŒã¯ããŸã£ããé¢ä¿ãããŸããã ãŠãŒã¶ãŒã«ãªã¹ãå
ã®ããŒããŒãéžæããŠããããéžæããããŒããŒã«é¢ããæ
å ±ã詳现ãã¥ãŒã«è¡šç€ºãããããã«ããŸãã ãã®UIãã¿ãŒã³ã¯äžè¬ã«ããã¹ã¿ãŒ/ãã£ããŒã«ããšããŠç¥ãããŠããŸãïŒããã¹ã¿ãŒ/ã¹ã¬ãŒãããšç¿»èš³ãããŸãããããã¹ã¿ãŒ/ãã£ããŒã«ãã¯å°æ¥äœ¿çšãããäºå®ã§ãïŒã ãã®å Žåããã¹ã¿ãŒã¯ããŒããŒã®ãªã¹ãã§ããã詳现ã¯éžæããããŒããŒã®è©³çްãªè¡šçŸã§ãã
ãªã¹ãå
ã®ããŒããŒã®ã¯ãªãã¯ã®ã€ãã³ãã«é¢é£ä»ãããããselectedHeroãã³ã³ããŒãã³ãã®ããããã£ãä»ããŠããã¹ã¿ãŒãè©³çŽ°ã«æ¥ç¶ããŸãããã
ã¯ãªãã¯ã€ãã³ãïŒããŠã¹ã¯ãªãã¯ïŒ
Angularã€ãã³ããã€ã³ãã£ã³ã°ã䜿çšããŠã¯ãªãã¯ã€ãã³ãåŠçãæ¿å
¥ããããšã«ããã <li>倿ŽããŸãã
app.component.tsïŒã¯ãªãã¯ã€ãã³ããã£ããã£ïŒ
  <li *ngFor="#hero of heroes" (click)="onSelect(hero)"> <span class="badge">{{hero.id}}</span> {{hero.name}} </li> 
ã€ãã³ããã€ã³ãã£ã³ã°ã«çŠç¹ãåœãŠãïŒ
  (click)="onSelect(hero)" 
æ¬åŒ§ã¯ãã¯ãªãã¯ã€ãã³ãã®ã¿ãŒã²ãããšããŠ<li>èŠçŽ ãæå®ããŸãã çå·ã®å³åŽã®åŒã¯ã AppComponentã³ã³ããŒãã³ãã«ããonSelect()ã¡ãœãããåŒã³åºãã heroãã³ãã¬ãŒãã®ããŒã«ã«å€æ°ãåŒæ°ãšããŠæž¡ããŸãã ããã¯ã以åã«ngForå®çŸ©ããã®ãšåãhero倿°ã§ãã
ã€ãã³ããã€ã³ãã£ã³ã°ã®è©³çްã«ã€ããŠã¯ãã ãŠãŒã¶ãŒå
¥åãããã³ã ãã³ãã¬ãŒãæ§æ ãã®ç« ãåç
§ããŠãã ããã
ã¯ãªãã¯ãã³ãã©ãŒã远å ãã
ãã®ã€ãã³ãã¯ããŸã ååšããªãonSelectã¡ãœããã«é¢é£ä»ããããŠããŸãã ãã®ã¡ãœãããã³ã³ããŒãã³ãã«è¿œå ããŸãã ãã®ã¡ãœããã¯äœããã¹ãã§ããïŒ ã³ã³ããŒãã³ãã®å€æ°ãselected heroãã«ããŠãŒã¶ãŒãã¯ãªãã¯ããããŒããŒãæžã蟌ãå¿
èŠããããŸãã
ãããŸã§ã®ãšãããã³ã³ããŒãã³ãã«ã¯ãã®ãããªå€æ°ã¯ãªãã®ã§ã远å ããããšããå§ããŸãããã
éžæããããŒããŒã®ä»»åœ
AppComponent heroããããã£ã¯å¿
èŠãªããªããŸããã selectedHeroããããã£ã«çœ®ãæããŸãã
app.component.tsïŒselectedHeroïŒ
  selectedHero: Hero; 
ãŠãŒã¶ãŒãèªåã§ããŒããŒãéžæãããŸã§ããŒããŒã¯éèŠã§ã¯ãªããšå€æãããããããŒããŒã§è¡ã£ãããã«selectedHeroåæåããŸããã
次ã«ããŠãŒã¶ãŒãã¯ãªãã¯ãhero selectedHeroããããã£ã«å€heroæžã蟌ãonSelectã¡ãœããã远å ããŸãã
app.component.tsïŒonSelectïŒ
  onSelect(hero: Hero) { this.selectedHero = hero; } 
éžæããããŒããŒã®è©³çްæ
å ±ããã³ãã¬ãŒãã«è¡šç€ºããå¿
èŠããããŸãã çŸæç¹ã§ã¯ããã³ãã¬ãŒãã¯ãŸã å€ãheroããããã£ã«ã¢ã¯ã»ã¹ããŠããŸãã ãã³ãã¬ãŒããä¿®æ£ããŠãæ°ããselectedHeroããããã£ã«ãã€ã³ãããŸãã
app.component.tsïŒselectedHeroã«ã¹ãããïŒ
  <h2>{{selectedHero.name}} details!</h2> <div><label>id: </label>{{selectedHero.id}}</div> <div> <label>name: </label> <input [(ngModel)]="selectedHero.name" placeholder="name"/> </div> 
ngIfã§ç©ºã®ããŒã¿ãé衚瀺ã«ãã
ã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒããããšãããŒããŒã®ãªã¹ãã衚瀺ãããŸãããããŒããŒã¯éžæãããŠããŸããã selectedHeroå®çŸ©ãselectedHeroããŸãããã€ãŸãã undefinedã§ãã ãããããã©ãŠã¶ã³ã³ãœãŒã«ã«æ¬¡ã®ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããçç±ã§ãã
  EXCEPTION: TypeError: Cannot read property 'name' of undefined in [null] 
èŠããŠããããã«ããã³ãã¬ãŒãã«ã¯selectedHero.nameã衚瀺selectedHero.nameããŸãã ããããã£ãå«ãselectedHero倿°ãå®çŸ©ãããŠããªãããã nameããããã£ã¯ååšããŸããã
ããŒããŒãéžæããããŸã§ãããŒããŒã«é¢ãã詳现æ
å ±ãDOMããåé€ããããšã«ããããã®åé¡ã解決ããŸãã
ããŒããŒã«é¢ãã詳现æ
å ±ãå«ãHTMLã<div>ã©ããããŸããã çµã¿èŸŒã¿ã®ngIfãã£ã¬ã¯ãã£ãã远å ããã³ã³ããŒãã³ãã®selectedHeroããããã£ãããã«èšå®ããŸãã
app.component.tsïŒngIfïŒ
  <div *ngIf="selectedHero"> <h2>{{selectedHero.name}} details!</h2> <div><label>id: </label>{{selectedHero.id}}</div> <div> <label>name: </label> <input [(ngModel)]="selectedHero.name" placeholder="name"/> </div> </div> 
*ãngIfãã®åã®å
é ã®ã¢ã¹ã¿ãªã¹ã¯ïŒ ïŒã¯æ§æã®éèŠãªéšåã§ããããšãå¿ããªãã§ãã ãã **
selectedHero倿°ãå®çŸ©ããããŸã§ã ngIfãã£ã¬ã¯ãã£ãã¯è©³çްãªããŒããŒæ
å ±ãå«ãHTMLãDOMããåé€ããŸãã ãããã£ãŠãããŒããŒã«é¢ããè©³çŽ°ãªæ
å ±ãæã€èŠçŽ ããå¿é
ãã䟡å€ã®ãããã€ã³ãã£ã³ã°ããããŸããã
ãŠãŒã¶ãŒããªã¹ãããããŒããŒãéžæãããšã selectedHero倿°ãå€ãååŸããŠå®çŸ©ããã ngIfãããŒããŒã«é¢ãã詳现æ
å ±ãå«ãããŒã¿ãDOMã«é
眮ãããã¹ãããããã€ã³ãã£ã³ã°ãå®è£
ããŸãã
ngIfãš `ngFor 'ã¯ããæ§é ãã£ã¬ã¯ãã£ãããšåŒã°ããŸããããã¯ãDOMã®äžéšã®æ§é ã倿Žã§ããããã§ãã ã€ãŸããAngularãDOMã§ã³ã³ãã³ããã¬ã³ããªã³ã°ããæ¹æ³ã®æ§é ãå®çŸ©ããŸãã
ngIfãngForãããã³ãã®ä»ã®æ§é åãã£ã¬ã¯ãã£ãã®è©³çްã«ã€ããŠã¯ã æ§é ãã£ã¬ã¯ãã£ããšãã³ãã¬ãŒãæ§æã®ç« ãåç
§ããŠãã ããã
ãã©ãŠã¶ãæŽæ°ãããããŒããŒã®ãªã¹ãã衚瀺ãããŸãããéžæããããŒããŒã«é¢ãã詳现æ
å ±ã¯è¡šç€ºãããŸããã NgIfã¯ã selectedHero倿°ãå®çŸ©ããããŸã§ãDOMã®å€éšã«ä¿åããŸãã ãªã¹ãå
ã®ããŒããŒãã¯ãªãã¯ãããšãéžæããããŒããŒã«é¢ãã詳现æ
å ±ã衚瀺ãããŸãã ãã¹ãŠãæåŸ
ã©ããã«æ©èœããŸãã
éžæããã¢ã€ãã ã®ã¹ã¿ã€ã«èšå®
ãªã¹ãã®äžã«éžæããããŒããŒã«é¢ããæ
å ±ã衚瀺ãããŸãããäžã®ãªã¹ãã§ã¯ãã®ããŒããŒããã°ããèŠã€ããããšãã§ããŸããã ãããä¿®æ£ããã«ã¯ãCSSã§selectedã¯ã©ã¹ãã¡ã€ã³ãªã¹ãã®å¯Ÿå¿ãã<li>èŠçŽ ã«é©çšããŸãã ããšãã°ãããŒããŒã®ãªã¹ãããããŒã³ã¿ãéžæãããšã次ã®ããã«èæ¯è²ã倿ŽããŠèŠèŠçã«åŒ·èª¿è¡šç€ºããããšãã§ããŸãã

ãã³ãã¬ãŒãã§selectedã¯ã©ã¹ãèšå®ããããã«ã classèŠçŽ ã«ãã€ã³ãã£ã³ã°ããããã£ã远å ããŸãã ããã¯ãçŸåšã®selectedHeroãšheroãæ¯èŒããåŒã«ãã£ãŠè¡ããŸãã
ããŒã¯CSSã¯ã©ã¹ã®ååã§ãïŒ selected ïŒã äž¡æ¹ã®ããŒããŒãäžèŽããå Žåãå€ã¯trueïŒ true ïŒãããã§ãªãå Žåã¯falseïŒ false ïŒã§ãã ãæåãäžèŽããå Žåã¯selectedã¯ã©ã¹ãé©çšããäžèŽããªãå Žåã¯åé€ããŸãããšèšããŸã ã
app.component.tsïŒCSSã¯ã©ã¹ã®èšå®ïŒ
  [class.selected]="hero === selectedHero" 
ãã³ãã¬ãŒãã§ã¯ã class.selectedè§æ¬åŒ§ïŒ [] ïŒã§å²ãŸããŠããããšã«æ³šæããŠãã ããã ããã¯ãããŒã¿ãœãŒã¹ïŒåŒhero === selectedHero ïŒããclassããããã£ã«ããŒã¿ãããŒãäžæ¹åã«é²ãããããã£ãã€ã³ãã£ã³ã°ã®æ§æã§ãã
app.component.tsïŒåããŒããŒã®æ§åŒåïŒ
  <li *ngFor="#hero of heroes" [class.selected]="hero === selectedHero" (click)="onSelect(hero)"> <span class="badge">{{hero.id}}</span> {{hero.name}} </li> 
ããããã£ã®ãã€ã³ãã®è©³çްã«ã€ããŠã¯ããã³ãã¬ãŒãã®æ§æã®ç« ãåç
§ããŠãã ããã
ãã©ãŠã¶ãã¢ããªã±ãŒã·ã§ã³ãåèµ·åããŸãã ããŒã³ã¿ã®ããŒããŒãéžæããŸããéžæã¯èæ¯è²ã«ãã£ãŠæç¢ºã«èå¥ãããŸãã

å¥ã®ããŒããŒãéžæãããšãèæ¯è²ããã®ããŒããŒã«åãæ¿ãããŸãã
çŸæç¹ã§ã®app.component.tsã®å®å
šãªã³ã³ãã³ãã¯app.component.tsã§ãã
app.component.ts import {Component} from 'angular2/core'; export class Hero { id: number; name: string; } @Component({ selector: 'my-app', template:` <h1>{{title}}</h1> <h2>My Heroes</h2> <ul class="heroes"> <li *ngFor="#hero of heroes" [class.selected]="hero === selectedHero" (click)="onSelect(hero)"> <span class="badge">{{hero.id}}</span> {{hero.name}} </li> </ul> <div *ngIf="selectedHero"> <h2>{{selectedHero.name}} details!</h2> <div><label>id: </label>{{selectedHero.id}}</div> <div> <label>name: </label> <input [(ngModel)]="selectedHero.name" placeholder="name"/> </div> </div> `, styles:[` .selected { background-color: #CFD8DC !important; color: white; } .heroes { margin: 0 0 2em 0; list-style-type: none; padding: 0; width: 15em; } .heroes li { cursor: pointer; position: relative; left: 0; background-color: #EEE; margin: .5em; padding: .3em 0; height: 1.6em; border-radius: 4px; } .heroes li.selected:hover { background-color: #BBD8DC !important; color: white; } .heroes li:hover { color: #607D8B; background-color: #DDD; left: .1em; } .heroes .text { position: relative; top: -3px; } .heroes .badge { display: inline-block; font-size: small; color: white; padding: 0.8em 0.7em 0 0.7em; background-color: #607D8B; line-height: 1em; position: relative; left: -1px; top: -4px; height: 1.8em; margin-right: .8em; border-radius: 4px 0 0 4px; } `] }) export class AppComponent { title = 'Tour of Heroes'; heroes = HEROES; selectedHero: Hero; onSelect(hero: Hero) { this.selectedHero = hero; } } var 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" } ]; 
 æ©ããé
ãã®ç« ã§éæããããšã¯æ¬¡ã®ãšããã§ãã
- ããŒããŒãã¢ãŒã«ããŒããŒã®ãªã¹ãã衚瀺ãããããã«ãªããŸããã
- ããŒããŒãéžæããéžæããããŒããŒã«é¢ãã詳现æ
å ±ã衚瀺ããæ©èœã远å ããŸããã
- ã³ã³ããŒãã³ããã³ãã¬ãŒãã§ngIfããã³ngForçµã¿èŸŒã¿ãã£ã¬ã¯ãã£ãã䜿çšããæ¹æ³ãåŠã³ãŸããã
ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããããŒã2
ä»åŸã®ãã¹
ç§ãã¡ã®ããŒããŒãã¢ãŒã¯æé·ããŸãããããŸã å®å
šã§ã¯ãããŸããã ã¢ããªã±ãŒã·ã§ã³å
šäœã1ã€ã®ã³ã³ããŒãã³ãã«å
¥ããããšã¯ã§ããŸããã ããããµãã³ã³ããŒãã³ãã«åè§£ãããããã飿ºãããæ¹æ³ãæããå¿
èŠããããŸãã æ¬¡ã®ç« ã§ãããè¡ãæ¹æ³ãåŠã³ãŸãã