homeコンポーネントを作成する

このチュートリアルはAngularアプリケーションの新しいコンポーネントを作成する方法を紹介します。

何を学ぶか

アプリケーションに新しいコンポーネントHomeが追加されます。

Angularコンポーネントの概念的な概要

Angularアプリケーションはコンポーネントを中心に構築されており、Angularの基本的な構成要素です。 コンポーネントはアプリケーション内の要素の機能や見た目を提供するコード、HTMLレイアウト、CSSスタイルが含まれます。 Angularではコンポーネントの中にさらに別のコンポーネントを含めることができます。アプリケーションの機能や見た目はコンポーネン単位に分割して構成できます。

Angularでは、コンポーネントにはプロパティを定義するためのメタデータがあります。 Homeコンポーネントを作成するときには、これらのプロパティを使用します。

  • selector: テンプレートでAngularがコンポーネントを参照する方法を示します。
  • standalone: コンポーネントがNgModuleを必要とするかを示します。
  • imports: コンポーネントの依存関係を示します。
  • template: コンポーネントのHTMLマークアップとレイアウトを示します。
  • styleUrls: コンポーネントが使用するCSSファイルのURLを配列で指定します。
  1. Create the Home

    このステップでは、アプリケーション用の新しいコンポーネントを作成します。

    IDEのターミナルペインで、

    1. プロジェクトディレクトリの中の、first-appディレクトリを開きます。

    2. 新しいHomeコンポーネントを作成するために、次のコマンドを実行します。

      ng generate component home
    3. アプリケーションをビルドし、開発サーバーを起動するために、次のコマンドを実行します。

      NOTE: このステップはローカル環境でのみ実施します!

      ng serve
    4. ブラウザを開き、http://localhost:4200にアクセスしてアプリケーションを確認します。

    5. アプリケーションがエラーなくビルドされていることを確認します。

      HELPFUL: 新しいコンポーネントを追加しましたが、まだアプリケーションのどのテンプレートにも組み込んでいませんので、前のレッスンと同様の表示になります。

    6. 次のステップに進む間も、ng serveはそのまま実行し続けておきます。

  2. アプリケーションのレイアウトに新しいコンポーネントを追加する

    このステップでは、新しいコンポーネントHomeをアプリのルートコンポーネントであるAppに追加し、アプリケーションのレイアウトに表示されるようにします。

    IDEの編集ペインで、

    1. エディタでapp.tsを開きます。

    2. app.tsでファイルレベルのインポートに、次の行を追加してHomeをインポートします。

      src/app/app.tsでHomeをインポートする

      import {Component} from '@angular/core';import {Home} from './home/home';@Component({  selector: 'app-root',  imports: [Home],  template: `    <main>      <header class="brand-name">        <img class="brand-logo" src="/public/logo.svg" alt="logo" aria-hidden="true" />      </header>      <section class="content">        <app-home />      </section>    </main>  `,  styleUrls: ['./app.css'],})export class App {  title = 'homes';}
    3. app.ts@Component内で、imports配列プロパティにHomeを追加します。

      src/app/app.tsで置き換える

      import {Component} from '@angular/core';import {Home} from './home/home';@Component({  selector: 'app-root',  imports: [Home],  template: `    <main>      <header class="brand-name">        <img class="brand-logo" src="/public/logo.svg" alt="logo" aria-hidden="true" />      </header>      <section class="content">        <app-home />      </section>    </main>  `,  styleUrls: ['./app.css'],})export class App {  title = 'homes';}
    4. app.ts@Component内で、次のHTMLコードを含むようにtemplateプロパティを更新します。

      src/app/app.tsで置き換える

      import {Component} from '@angular/core';import {Home} from './home/home';@Component({  selector: 'app-root',  imports: [Home],  template: `    <main>      <header class="brand-name">        <img class="brand-logo" src="/public/logo.svg" alt="logo" aria-hidden="true" />      </header>      <section class="content">        <app-home />      </section>    </main>  `,  styleUrls: ['./app.css'],})export class App {  title = 'homes';}
    5. 変更をapp.tsに保存します。

    6. ng serveが実行中の場合、アプリケーションは自動的に更新されます。 実行中でない場合、再度ng serveを開始してください。 Homeコンポーネントによって、Hello worldが*home works!*に変わるはずです。

    7. ブラウザで実行中のアプリケーションをチェックし、アプリケーションが更新されていることを確認します。

    テキスト'home works!'を表示するページのブラウザのフレーム
  3. Homeコンポーネントに機能を追加する

    このステップでは、Homeコンポーネントに機能を追加します。

    前のステップでは、HomeのデフォルトのHTMLがアプリケーションで表示されるよう、Homeをアプリケーションのテンプレートに追加しました。 このステップでは、後のレッスンで使用する検索フィルターとボタンを追加します。 現時点でHomeが持つのはこれだけです。 なお、このステップでは検索用の要素をレイアウトに追加するだけで、まだ機能はありません。

    (ng newで)スターターを使わずに、新しいAngularプロジェクトを作成した場合、 検索ボタンと入力欄の枠線が表示されるようsrc/styles.cssに次のグローバルスタイルを追加します。

    :root {  --primary-color: #605DC8;  --secondary-color: #8B89E6;  --accent-color: #e8e7fa;  --shadow-color: #E8E8E8;}button.primary {  padding: 10px;  border: solid 1px var(--primary-color);  background: var(--primary-color);  color: white;  border-radius: 8px;}

    IDEの編集ペインで、

    1. first-appディレクトリで、home.tsをエディタで開きます。

    2. home.ts@Componentで、templateプロパティを次のコードで更新します。

      src/app/home/home.tsを置き換える

      import {Component} from '@angular/core';@Component({  selector: 'app-home',  template: `    <section>      <form>        <input type="text" placeholder="Filter by city" />        <button class="primary" type="button">Search</button>      </form>    </section>  `,  styleUrls: ['./home.css'],})export class Home {}
    3. 次に、エディタでhome.cssを開き、次のスタイルで内容を更新します。`

      NOTE: ブラウザでは、src/app/home/home.tsstyles配列にこれらのスタイルを記述可能です。

      src/app/home/home.cssを置き換える

      .results {  display: grid;  column-gap: 14px;  row-gap: 14px;  grid-template-columns: repeat(auto-fill, minmax(400px, 400px));  margin-top: 50px;  justify-content: space-around;}input[type="text"] {  border: solid 1px var(--primary-color);  padding: 10px;  border-radius: 8px;  margin-right: 4px;  display: inline-block;  width: 30%;}button {  padding: 10px;  border: solid 1px var(--primary-color);  background: var(--primary-color);  color: white;  border-radius: 8px;}@media (min-width: 500px) and (max-width: 768px) {  .results {      grid-template-columns: repeat(2, 1fr);  }  input[type="text"] {      width: 70%;  }   }@media (max-width: 499px) {  .results {      grid-template-columns: 1fr;  }    }
    4. アプリケーションがエラーなくビルドされていることを確認してください。フィルター用の入力ボックスとボタンが表示され、スタイルが反映されているはずです。次のステップに進む前に、エラーがあれば修正してください。

    homesアプリケーションのロゴ、フィルター入力欄、検索ボタンが表示されたブラウザ画面

SUMMARY: このレッスンでは、アプリケーションに新しいコンポーネントを作成し、フィルター用の入力欄とボタンを追加しました。

このレッスンで扱った内容の詳細については、次のページをご覧ください: