コンポーネント
コンポーネントの作成
$ cd src/app
$ ng generate component heroes
このコマンドでheroes
ディレクトリがコンポーネント(要素)として作成され、中には
heroes.component.ts
heroes.component.html
heroes.component.css
heroes.component.spec.ts
が自動で作成されています。
ここで登場したspec.tsファイルはテスト用のファイルです。
動作の確認
<h1>{{title}}</h1>
<app-heroes></app-heroes>
このように書くとheroesコンポーネントを組み合わせることができます。
こんなんが出てきますね。
また前回のようにtsファイルの値をHTMLに表示してみたいと思います。
まず、型を定義するファイル(Heroクラス)をsrc/app
に作ります。
$ cd src/app
$ touch hero.ts
export class Hero{
id: number;
name: string;
}
これを他のファイルからインポートすることでこの型を使用することができます。
import { Component, OnInit } from '@angular/core';
import {Hero} from '../hero';//ここでインポート
@Component({
selector: 'app-heroes',
templateUrl: './heroes.component.html',
styleUrls: ['./heroes.component.css']
})
export class HeroesComponent implements OnInit {
hero: Hero = {//ここを追加
id: 1,
name: 'Windstorm'
};
constructor() { }
ngOnInit() {
}
}
ここで、heroがオブジェクトになったのでHTMLファイルを変更しなければいけません。
<h2>{{hero.name | uppercase}} Details</h2>
<div><span>id: </span>{{hero.id}}</div>
<div><span>name: </span>{{hero.name}}</div>
1行目の| uppercase
は大文字にするためのパイプです。
このように詳細が表示されるようになりました。
プロパティを編集する
次にヒーローの詳細でnameプロパティを変更できるようにします。
要するにヒーローの名前を変えます。
まず、そのためにFormsModule
をインポートする必要があります。
このように新たなライブラリやモジュールをインポートするときにはapp/app.module.ts
に記述しなければ使用できません。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';//ここを追加
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { HeroesComponent } from './heroes/heroes.component';
@NgModule({
declarations: [
AppComponent,
HeroesComponent
],
imports: [
BrowserModule,
AppRoutingModule,
FormsModule//ここを追加
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
モジュールをインポートできたら、htmlを変更します。
<h2>{{hero.name | uppercase}} Details</h2>
<div><span>id: </span>{{hero.id}}</div>
<div>
<label>name:
<input [(ngModel)]="hero.name" placeholder="name"/>
</label>
</div>
この[(ngModel)]
が、双方向データバイディングといいます。これをhero.name
に指定することによってnameプロパティを変更させることができます。
![スクリーンショット 2020-02-02 21.06.20.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F519379%2F39d1ad81-9166-a40c-de43-22c917d40d4e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=089dbe631088fca5c037564126047d18)
この出来上がったフォームの中身を変更することによって、ヒーローの名前を変更することができます。