Files
everything-claude-code/docs/ja-JP/skills/angular-developer/references/inputs.md
Claude 174e31b3fc feat(ja-JP): add skill sub-reference translations (angular, remotion, etc.)
Translated 85 skill sub-reference files to achieve full parity with
the English source:

- skills/angular-developer/references/ — 35 files (all references)
- skills/remotion-video-creation/rules/ — 28 files (all rules)
- skills/tinystruct-patterns/references/ — 5 files
- skills/openclaw-persona-forge/references/ — 6 files
- skills/skill-comply/prompts/ — 3 files
- skills/lead-intelligence/agents/ — 4 files
- skills/brand-voice/references/ — 1 file
- skills/frontend-slides/ — 2 files
- hooks/memory-persistence/README.md — 1 file

English source parity: 0 missing files (excluding rules/zh/, internal
docs, and experimental examples absent from zh-CN)
2026-05-18 06:15:26 +09:00

102 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 入力Inputs
入力により、親コンポーネントから子コンポーネントにデータを流すことができます。Angular はモダンなアプリケーションにはシグナルベースの `input` API の使用を推奨しています。
## シグナルベースの入力
`input()` 関数を使用して入力を宣言します。これは `InputSignal` を返します。
```ts
import {Component, input, computed} from '@angular/core';
@Component({
selector: 'app-user',
template: `<p>User: {{ name() }} ({{ age() }})</p>`,
})
export class User {
// デフォルト値を持つオプションの入力
name = input('Guest');
// 必須の入力
age = input.required<number>();
// 入力はリアクティブなシグナル
label = computed(() => `Name: ${this.name()}`);
}
```
### テンプレートでの使用
```html
<app-user [name]="userName" [age]="25" />
```
## 設定オプション
`input` 関数は設定オブジェクトを受け取ります:
- **エイリアス**:テンプレートで使用されるプロパティ名を変更します。
- **トランスフォーム**:コンポーネントに到達する前に値を変更します。
```ts
import { input, booleanAttribute } from '@angular/core';
@Component({...})
export class CustomButton {
// エイリアスの例
label = input('', { alias: 'btnLabel' });
// 組み込みヘルパーを使用したトランスフォームの例
disabled = input(false, { transform: booleanAttribute });
}
```
## モデル入力(双方向バインディング)
双方向データバインディングをサポートする入力を作成するには `model()` を使用します。
```ts
@Component({
selector: 'custom-counter',
template: `<button (click)="increment()">+</button>`,
})
export class CustomCounter {
value = model(0);
increment() {
this.value.update((v) => v + 1);
}
}
```
### 使用方法
```html
<!-- シグナルによる双方向バインディング -->
<custom-counter [(value)]="mySignal" />
<!-- プレーンプロパティによる双方向バインディング -->
<custom-counter [(value)]="myProperty" />
```
## デコレーターベースの入力(@Input
レガシー API は引き続きサポートされていますが、新しいコードには推奨されません。
```ts
import { Component, Input } from '@angular/core';
@Component({...})
export class Legacy {
@Input({ required: true }) value = 0;
@Input({ transform: trimString }) label = '';
}
```
## ベストプラクティス
- **シグナルを優先する**:より良いリアクティビティと型安全性のために `@Input()` ではなく `input()` を使用します。
- **必須入力**:ビルド時エラーを得るために必須データには `input.required()` を使用します。
- **純粋なトランスフォーム**:入力トランスフォーム関数は純粋で静的に解析可能であることを確認します。
- **衝突を避ける**:標準の DOM プロパティと衝突する入力名は使用しないでください(例:`id``title`)。