input()によるSignal入力
リアクティブな入力をSignalとして宣言します。
「input()によるSignal入力」はCoddyKit上の無料Angular Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAngular Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Angular Academyコースには全4レッスンが含まれています。
SignalベースのInput
最新のAngularでは、input()関数を使ってコンポーネントのInputをSignalとして宣言できます。従来の@Inputデコレーターを、リアクティブな方法に置き換える機能です。
Signal Inputの宣言
input()を任意のデフォルト値とともに呼び出します。戻り値は読み取り専用のSignalです。
import { Component, input } from "@angular/core";
@Component({ selector: "app-greet", template: "" })
export class GreetComponent {
name = input("World");
}Inputの読み取り
Signal Inputは、コードでもテンプレートでも、関数のように呼び出して読み取ります。
@Component({
selector: "app-greet",
template: "<p>Hello, {{ name() }}</p>"
})
export class GreetComponent {
name = input("World");
}親からのバインディング
親コンポーネントからSignal Inputにバインドする方法は、従来のInputとまったく同じで、プロパティバインディングを使用します。
<app-greet [name]="userName"></app-greet>
// parent
userName = "Ada";Inputは読み取り専用
通常のinput()はコンポーネント内で読み取り専用です。setを呼び出すことはできず、値を変更できるのは親コンポーネントだけです。
// this is NOT allowed:
// this.name.set("x");
// inputs are read-only signalsInputの型指定
型安全性を確保するため、ジェネリック型を指定します。特に、推論できるデフォルト値がない場合に有効です。
age = input<number>();
label = input<string>("Untitled");Computed値でのInputの利用
InputはSignalであるため、computedと組み合わせて、状態の変化に自動的に更新される派生状態を作成できます。
import { input, computed } from "@angular/core";
first = input("");
last = input("");
fullName = computed(() => this.first() + " " + this.last());effectを使ったInput
effectを使うとInputの変更に反応できます。読み取っているSignalが変化するたびに再実行されます。
constructor() {
effect(() => {
console.log("name is", this.name());
});
}ngOnChangesは不要
Signal Inputを使うと、ngOnChangesが不要になることが多くなります。変更への反応はcomputedとeffectが自動的に処理します。
Inputのエイリアス設定
aliasオプションを使うと、異なる公開バインディング名を指定できます。
value = input(0, { alias: "count" });
<!-- parent binds with the alias -->
<app-counter [count]="total"></app-counter>Signal Inputを使う理由
Signal Inputはリアクティブで型安全であり、computedやeffectとも自然に組み合わせられます。そのため、デコレーターとライフサイクルを使う方法に比べて定型コードを減らせます。
クイックチェック
Signal Inputについて理解度を確認しましょう。
まとめ
input()関数は、リアクティブで読み取り専用のSignal Inputを宣言します。呼び出して読み取り、ジェネリック型で型を指定し、必要に応じてエイリアスを設定します。ngOnChangesの代わりにcomputedやeffectと組み合わせて使用します。
よくある質問
「input()によるSignal入力」レッスンは無料ですか?
はい。「input()によるSignal入力」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Angular Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Angular Academyコースには全4レッスンが含まれています。
「input()によるSignal入力」で何を学びますか?
リアクティブな入力をSignalとして宣言します。 ブラウザで直接実行するハンズオンコードでAngular Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Angular Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAngular Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「input()によるSignal入力」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAngular Academyレッスンでコードを書いて実行できますか?
はい。すべてのAngular Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- input()によるSignal入力
- 必須入力と変換入力
- output()による出力
- viewChildによるビュークエリ