Angular JS TUTORIAL
TUTORIAL
2.THE HERO EDITOR
Hero object
AppComponent の子クラス?のHeroクラスは、importの行の直下に書けと書いている。(たぶん、コーディングルール。どこに書いても動作に影響はない。)
Multi-line template strings
tsファイル - template:1行のときは''で囲む。複数行のときは``(バッククオーテーション)で囲む。
Two-Way Binding
input 要素の値をオブジェクトに反映させる方法について紹介する。
- app.module.ts にFormsModule を追加。
- HTMLのinputタグを以下のように書く。
<input [(ngModel)]="hero.name" placeholder="name">
3.MASTER/DETAIL
Where We Left Off
2.THE HERO EDITORをベースに修正していく。
Creating heroes
Heroクラスのオブジェクトの配列を作る方法について紹介する。
Listing heroes with ngFor
<li *ngFor="let hero of heroes"> <span class="badge">{{hero.id}}</span> {{hero.name}} </li>
Styling our heroes
@Component のtemplateとプロパティと同じ階層にstylesプロパティを追加することで、スタイルシートを書ける。 特定のコンポーネントだけに反映されるというメリット。
スタイルシートの各要素について軽く調査した。インラインでコメントする。
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;
マウスカーソルの形状を指定する際に使用する。(参考) 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; }
li.selected???? →章「Styling the selection」で説明している。
.heroes li:hover { color: #607D8B; /* 文字色(前景色)を指定する */ background-color: #DDD; /* 背景色を指定する */ left: .1em; /* 左からの配置位置を指定 */ }
hover擬似クラス:カーソルが乗っている要素にスタイルを適用する。(参考) ここではカーソルが乗った\<li>要素の色を変えると共に、左からの配置位置を少し移動している。
.heroes .text { position: relative; top: -3px; }
textクラス定義していないので使われていないっぽい。
.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; } `]
Hide the empty detail with ngIf
ngIf を使い、オブジェクトが定義されていないときはHTML要素を表示しないようにする。
Styling the selection
条件を満たしたときにCSSのクラスを追加する方法。
[class.selected]="hero === selectedHero"
この場合、heroとselectedHeroが同じ値の場合(選択されたオブジェクトである場合)、selectedクラスを追加し、スタイルシートによって文字色を変える。