0Pricing
Angular Academy · レッスン

output()による出力

新しいoutput APIでイベントを発行します。

「output()による出力」はCoddyKit上の無料Angular Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAngular Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Angular Academyコースには全4レッスンが含まれています。

Signal時代のOutput

Signal Inputに加えて、最新のAngularではoutput()関数を使ってコンポーネントイベントを宣言できます。従来の@OutputとEventEmitterを置き換える機能です。

Outputの宣言

output()を呼び出して、コンポーネントが発行できるイベントを作成します。ペイロードの型にはジェネリック型を指定します。

import { Component, output } from "@angular/core";

@Component({ selector: "app-counter", template: "" })
export class CounterComponent {
  changed = output<number>();
}

イベントの発行

Outputでemitを呼び出すと、リスナーに値を送信できます。

export class CounterComponent {
  changed = output<number>();
  count = 0;
  inc() {
    this.count++;
    this.changed.emit(this.count);
  }
}

親からのリスニング

親コンポーネントはイベントバインディングを使って購読し、発行されたペイロードには$eventを使用します。

<app-counter (changed)="onChange($event)"></app-counter>

// parent
onChange(value: number) {
  this.total = value;
}

ペイロードなしのOutput

データを持たないイベントには、output<void>()を使用し、引数なしでemitします。

closed = output<void>();

close() {
  this.closed.emit();
}

outputとEventEmitterの違い

output() APIはよりシンプルで、RxJSに依存しません。EventEmitterのインスタンスを作成する必要はなく、関数が代わりに作成します。

// classic:
@Output() changed = new EventEmitter<number>();

// modern:
changed = output<number>();

Outputのエイリアス設定

aliasオプションを使うと、異なる公開イベント名を指定できます。

valueChange = output<number>({ alias: "change" });

<!-- parent listens with the alias -->
<app-counter (change)="onChange($event)"></app-counter>

Outputと双方向バインディング

inputと、xChangeという名前のoutputを組み合わせると双方向バインディングを有効にできます。ただし、model()を使うとより簡潔に実現できます。

value = input(0);
valueChange = output<number>();
// enables [(value)] on the parent

ObservableからのOutputの派生

相互運用ヘルパーoutputFromObservableを使うと、ObservableをOutputに変換できます。RxJSストリームと新しいAPIを橋渡しする機能です。

import { outputFromObservable } from "@angular/core/rxjs-interop";

clicks = outputFromObservable(this.clicks$);

型安全性

Outputには型が付いているため、親のハンドラーパラメーターは発行されたペイロードの型と照合され、型の不一致をコンパイル時に検出できます。

selected = output<{ id: number }>();

<!-- parent must accept { id: number } -->
<app-list (selected)="pick($event)"></app-list>

outputを使う場面

新しいコンポーネントではoutput()を優先してください。軽量で型安全なうえ、Signal Inputとも自然に組み合わせられ、コンポーネント間の通信を表現できます。

クイックチェック

output関数について理解度を確認しましょう。

まとめ

output()関数は、EventEmitterを使わずに型付きイベントを宣言します。emit()で発行し、イベントバインディングと$eventでリッスンします。必要に応じてエイリアスを設定し、Signal Inputと組み合わせることで、コンポーネント間の通信を簡潔に実現できます。

よくある質問

「output()による出力」レッスンは無料ですか?

はい。「output()による出力」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Angular Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Angular Academyコースには全4レッスンが含まれています。

「output()による出力」で何を学びますか?

新しいoutput APIでイベントを発行します。 ブラウザで直接実行するハンズオンコードでAngular Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Angular Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAngular Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「output()による出力」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAngular Academyレッスンでコードを書いて実行できますか?

はい。すべてのAngular Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. input()によるSignal入力
  2. 必須入力と変換入力
  3. output()による出力
  4. viewChildによるビュークエリ
← Angular Academyに戻る