本文同步發佈於:Claire's BLOG
在前一篇新手教程3-使用angular的迴圈及判斷式等功能裡,我們在顯示selectedHero
的資訊時是與列表寫在同一個頁面
但如果顯示詳細資訊的地方有需要額外拆分出來,可以在創立一個元件,並將selectedHero
傳入元件
ng generate component hero-detail
開啟檔案src/app/hero-detail/hero-detail.component.html
,這邊會將selectedHero
的名稱改為hero
<div *ngIf="hero">
<h2>{{ hero.name | uppercase }} Details</h2>
<div><span>id: </span>{{hero.id}}</div>
<div>
<label>name:
<input [(ngModel)]="hero.name" placeholder="name"/>
</label>
</div>
</div>
開啟src/app/hero-detail/hero-detail.component.ts
import { Hero } from '../hero';
在hero-detail.component.ts
裡面,hero
一定要以@Input
來宣告這個物件
@Input() hero: Hero;
而在HeroesComponent
裡,則會以下面的宣告來將hero
的值傳入
<app-hero-detail [hero]="selectedHero"></app-hero-detail>
現在我們打開heroes.component.html
,修改後的網頁內容會如下
<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>
<app-hero-detail [hero]="selectedHero"></app-hero-detail>
今日練習的範例連結:live example / download example
<app-hero-detail [hero]="selectedHero"> 裏的[hero]="selectedHero"是怎樣解? 為什麼hero要用[]? THX