본문으로 건너뛰기
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 / 1,000자

이 양식은 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의 스킬 모두 보기

이 스킬의 문제 신고