LoginSignup
1
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-01-06

「基本的な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 というボタンが表示されるようになります。
021a.png
この時点では、まだ Notify Me をクリックしても何も起きません。

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0