このチュートリアルレッスンではinputを作成し、それを使ってコンポーネントにデータを渡してカスタマイズする方法を紹介します。
NOTE: この動画は古い構文を使っていますが、主要なコンセプトは今でも有効です。
何を学ぶか
アプリケーションのHousingLocationコンポーネントのテンプレートには、入力を受け取るためのHousingLocationプロパティがあります。
inputプロパティのコンセプト概要
Inputsを使うと、親コンポーネントから渡されるデータを子コンポーネントで受け取れるようになります。
このレッスンでは、コンポーネントで表示されるデータをカスタマイズできるようにするため、HousingLocationコンポーネント内にinputプロパティを定義します。
詳しく学ぶにはinputプロパティでデータを受け取るガイドとoutputを使ったカスタムイベントガイドを参照して下さい。
-
input()関数をインポートする
コードエディタ―で、
HousingLocationコンポーネントに@angular/coreからinputヘルパーメソッドをインポートします。housing-location.tsでinputをインポートする
import {Component, input} from '@angular/core'; import {HousingLocationInfo} from '../housinglocation'; @Component({ selector: 'app-housing-location', template: ` <p>housing-location works!</p> `, styleUrls: ['./housing-location.css'], }) export class HousingLocation { housingLocation = input.required<HousingLocationInfo>(); } -
inputプロパティを追加する
必須のプロパティであるhousingLocationを追加し、
HousingLocationInfo型としてinput.required()を使って初期化します。housing-location.tsでinputプロパティを宣言する
import {Component, input} from '@angular/core'; import {HousingLocationInfo} from '../housinglocation'; @Component({ selector: 'app-housing-location', template: ` <p>housing-location works!</p> `, styleUrls: ['./housing-location.css'], }) export class HousingLocation { housingLocation = input.required<HousingLocationInfo>(); }親コンポーネントが値を必ず提供しなければならないことを示すために、
inputのrequiredメソッドを呼び出す必要があります。例のアプリケーションでは、この値は設計上必ず渡されます。.required()を呼ぶことで、TypeScriptコンパイラがこの制約をチェックし、さらにテンプレートでコンポーネントが使用される際に、このプロパティを非nullとして扱います。 -
inputにデータを渡す
HomeコンポーネントからHousingLocationコンポーネントのhousingLocationプロパティへhousingLocationの値を渡します。home.tsでHousingLocation用のinputプロパティを宣言する
import {Component} from '@angular/core'; import {HousingLocation} from '../housing-location/housing-location'; import {HousingLocationInfo} from '../housinglocation'; @Component({ selector: 'app-home', imports: [HousingLocation], template: ` <section> <form> <input type="text" placeholder="Filter by city" /> <button class="primary" type="button">Search</button> </form> </section> <section class="results"> <app-housing-location [housingLocation]="housingLocation" /> </section> `, styleUrls: ['./home.css'], }) export class Home { readonly baseUrl = 'https://angular.dev/assets/images/tutorials/common'; housingLocation: HousingLocationInfo = { id: 9999, name: 'Test Home', city: 'Test city', state: 'ST', photo: `${this.baseUrl}/example-house.jpg`, availableUnits: 99, wifi: true, laundry: false, }; }
SUMMARY: このレッスンでは、新しいinputプロパティを作成しました。また、.requiredメソッドを使うことで、シグナル値が常に定義されていることを保証します。