[Angular] 「基本的なAngularアプリをはじめる」をやってみる(3)子コンポーネントにデータを渡す


「基本的なAngularアプリをはじめる」をやってみる(3)

[Angular] 「基本的なAngularアプリをはじめる」をやってみる(準備)

[Angular] 「基本的なAngularアプリをはじめる」をやってみる(1)

[Angular] 「基本的なAngularアプリをはじめる」をやってみる(2)

Angular のチュートリアルをやってみています。

子コンポーネントにデータを渡す

Angular公式ページ : 子コンポーネントにデータを渡す

このセクションでは、親コンポーネントである ProductListComponent からデータを受け取ることができる子コンポーネント ProductAlertsComponent を作成する方法を説明します。

1.Angular Generator を使って product-alerts という名前の新しいコンポーネントを生成

チュートリアルの指示の通り product-alerts コンポーネントを生成します。
すると、自動的に以下の3つのファイルが作成されます。

product-alerts.component.ts
product-alerts.component.html
product-alerts.component.css

2.まず @angular/core から Input をインポート
product-alerts.component.ts
import { Input } from '@angular/core';

product-alerts.component.ts に、上記のように Input をインポートするための記述を追加します。

3.product という名前のプロパティに @Input() デコレーターを付けて定義
product-alerts.component.ts
export class ProductAlertsComponent implements OnInit {
  @Input() product;
  constructor() { }

  ngOnInit() {
  }

}

上記のように @Input() product; という記述を追加します。

この @Input() デコレーターは、プロパティの値がコンポーネントの親である ProductListComponent から渡されることを示します。

4.product-alerts.component.html に button タグを記述
product-alerts.component.html
<p *ngIf="product.price > 700">
  <button>Notify Me</button>
</p>

product-alerts.component.html を開き、デフォルトに書かれているものを、上記のように書き換えます。

5.product-list.component.html にセレクター を追加

ProductListComponent の子として ProductAlertsComponent を表示するには、product-list.component.html にセレクター を追加します。

product-list.component.html
<button (click)="share()">
  Shareボタン
</button>

<app-product-alerts
  [product]="product">
</app-product-alerts>

(プロパティバインディングなるものを使用しています。この [] の使い方のことですね。)

ここまでやりますと、下図のように Notify Me というボタンが表示されるようになります。

この時点では、まだ Notify Me をクリックしても何も起きません。

次の記事 : [Angular] 「基本的なAngularアプリをはじめる」をやってみる(4)親コンポーネントにデータを渡す