入門
基本概念

コンポーネント

Angularでアプリケーションを作成するための基本的な構成要素。

コンポーネントは、プロジェクトを理解しやすい部品に分割し、明確な責任を持たせることで、コードの保守性とスケーラビリティを向上させます。

Todoアプリケーションをコンポーネントのツリーに分解する例を示します。

TodoApp

TodoList

TodoMetrics

TodoListItem

このガイドでは、Angularでコンポーネントを作成および使用する方法について説明します。

コンポーネントの定義

すべてのコンポーネントには、核となる次のプロパティがあります。

  1. いくつかの設定を含む @Componentデコレーター
  2. DOMにレンダリングされる内容を制御するHTMLテンプレート
  3. HTMLでコンポーネントがどのように使用されるかを定義する CSSセレクター
  4. 状態管理、ユーザー入力処理、サーバーからのデータフェッチなどの動作を持つTypeScriptクラス

TodoListItemコンポーネントの簡略化された例を次に示します。

      
// todo-list-item.component.ts@Component({  selector: 'todo-list-item',  template: `    <li>(TODO) Read Angular Essentials Guide</li>  `,})export class TodoListItem {  /* コンポーネントの動作はここで定義します。 */}

コンポーネントでよく見られるその他のメタデータには次のものがあります。

  • standalone: true — コンポーネントの作成を簡素化する推奨アプローチ
  • styles — コンポーネントに適用するCSSスタイルを含む文字列または文字列の配列

これを踏まえて、TodoListItem コンポーネントの更新バージョンを示します。

      
// todo-list-item.component.ts@Component({  standalone: true,  selector: 'todo-list-item',  template: `    <li>(TODO) Read Angular Essentials Guide</li>  `,  styles: `    li {      color: red;      font-weight: 300;    }  `,})export class TodoListItem {  /* コンポーネントの動作はここで定義します。 */}

HTMLとCSSを別ファイルに分離する

HTMLやCSSを別ファイルで管理することを好むチーム向けに、Angularは templateUrlstyleUrl の2つの追加プロパティを提供します。

前の TodoListItem コンポーネントを使用して、代替アプローチは次のようになります。

      
// todo-list-item.component.ts@Component({  standalone: true,  selector: 'todo-list-item',  templateUrl: './todo-list-item.component.html',  styleUrl: './todo-list-item.component.css',})export class TodoListItem {  /* コンポーネントの動作はここで定義します。 */}
      
<!-- todo-list-item.component.html --><li>(TODO) Read Angular Essentials Guide</li>
      
/* todo-list-item.component.css */li {  color: red;  font-weight: 300;}

コンポーネントの使用

コンポーネントアーキテクチャの利点の1つは、アプリケーションがモジュール化されることです。つまり、コンポーネントは他のコンポーネントの中で使用できます。

コンポーネントを使用するには、次の手順を実行します。

  1. ファイルにコンポーネントをインポートする
  2. コンポーネントの imports 配列に追加する
  3. テンプレートでコンポーネントのセレクターを使用する

前の TodoListItem コンポーネントをインポートする TodoList コンポーネントの例を次に示します。

      
// todo-list.component.tsimport {TodoListItem} from './todo-list-item.component.ts';@Component({  standalone: true,  imports: [TodoListItem],  template: `    <ul>      <todo-list-item></todo-list-item>    </ul>  `,})export class TodoList {}

次のステップ

Angularのコンポーネントの仕組みがわかったところで、アプリケーションに動的なデータを追加して管理する方法について学びましょう。