本文へ移動
cccskills
無料GitHub で公開

angular-forms

Angular forms: Signal Forms (experimental) and Reactive Forms. Trigger: When working with forms, validation, or form state in Angular.

日本語の概要は準備中です。原文の説明を表示しています。

Gentleman-Programming/Gentleman-Skillsスター 660(GitHub 660 + cccskills 0)

実行スコア 未検証

インストール方法を見る

含まれるファイル(1)

  • SKILL.md2.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

When to Use What

Use CaseRecommendation
New apps with signalsSignal Forms (experimental)
Production appsReactive Forms
Simple formsTemplate-driven

Signal Forms (v21+, experimental)

import { form, FormField, required, email } from '@angular/forms/signals';

@Component({
  imports: [FormField],
  template: `
    <form>
      <input [formField]="emailField" type="email" />
      <input [formField]="passwordField" type="password" />
      <button (click)="submit()">Login</button>
    </form>
  `
})
export class LoginComponent {
  readonly loginForm = form({
    email: ['', [required, email]],
    password: ['', required]
  });
  
  readonly emailField = this.loginForm.controls.email;
  readonly passwordField = this.loginForm.controls.password;
  
  submit() {
    if (this.loginForm.valid()) {
      const values = this.loginForm.value();
    }
  }
}

Signal Forms Benefits

  • Automatic two-way binding
  • Type-safe field access
  • Schema-based validation
  • Built on signals

Reactive Forms (production)

import { FormBuilder, Validators, ReactiveFormsModule } from '@angular/forms';

@Component({
  imports: [ReactiveFormsModule],
  template: `
    <form [formGroup]="form" (ngSubmit)="submit()">
      <input formControlName="email" type="email" />
      <input formControlName="password" type="password" />
      <button type="submit" [disabled]="form.invalid">Login</button>
    </form>
  `
})
export class LoginComponent {
  private readonly fb = inject(FormBuilder);

  form = this.fb.nonNullable.group({
    email: ['', [Validators.required, Validators.email]],
    password: ['', [Validators.required, Validators.minLength(8)]],
  });
  
  submit() {
    if (this.form.valid) {
      const { email, password } = this.form.getRawValue();
    }
  }
}

Key Points

  • ALWAYS use fb.nonNullable.group() for type safety
  • Use getRawValue() to get typed values
  • Reactive Forms are synchronous (easier to test)

Nested Forms & FormArray

form = this.fb.nonNullable.group({
  name: [''],
  address: this.fb.group({
    street: [''],
    city: [''],
  }),
  phones: this.fb.array([this.fb.control('')]),
});

get phones() {
  return this.form.get('phones') as FormArray;
}

addPhone() {
  this.phones.push(this.fb.control(''));
}

Resources

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

ai-sdk-5

無料

Vercel AI SDK 5 patterns. Trigger: When building AI chat features - breaking changes from v4.

日本語の概要は準備中です。原文の説明を表示しています。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Angular architecture: Scope Rule, project structure, file naming, style guide. Trigger: When structuring Angular projects or deciding where to place components.

日本語の概要は準備中です。原文の説明を表示しています。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Angular core patterns: standalone components, signals, inject, control flow, zoneless. Trigger: When creating Angular components, using signals, or setting up zoneless.

日本語の概要は準備中です。原文の説明を表示しています。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Angular performance: NgOptimizedImage, @defer, lazy loading, SSR. Trigger: When optimizing Angular app performance, images, or lazy loading.

日本語の概要は準備中です。原文の説明を表示しています。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Django REST Framework patterns. Trigger: When building REST APIs with Django - ViewSets, Serializers, Filters.

日本語の概要は準備中です。原文の説明を表示しています。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

electron

無料

Electron patterns for building cross-platform desktop applications. Trigger: When building desktop apps, working with Electron main/renderer processes, IPC communication, or native integrations.

日本語の概要は準備中です。原文の説明を表示しています。

Gentleman-Programming/Gentleman-Skills6602026年3月28日 更新

Gentleman-Programming のスキルをすべて見る

このスキルの問題を報告する