CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Angular 路线图实战/课时/表单
RawBlame
课时目录12 节

Angular 路线图实战

  1. 01Angular 入门与 CLI
  2. 02组件与生命周期
  3. 03模板与数据绑定
  4. 04指令与管道
  5. 05表单
  6. 06服务与依赖注入
  7. 07HttpClient 与安全
  8. 08Router 与懒加载
  9. 09RxJS 与 Signals
  10. 10SSR、测试与 i18n
  11. 11NgModule 与库
  12. 12综合练习

表单

响应式 vs 模板驱动、校验器。

35 分钟

表单

路线图「Forms」:模板驱动 适合简单字段;响应式表单(Reactive Forms) 用 FormGroup 建模,适合 B 端复杂校验。企业后台与 Vue 3 核心 管理页类似,复杂场景首选 Reactive。

学习目标

  • 用 FormBuilder 构建 FormGroup 与校验器
  • 对比 Template-driven 与 Reactive Forms 适用场景
  • 在模板展示字段级错误信息

核心概念

响应式表单

import { Component, inject } from "@angular/core";
import { ReactiveFormsModule, FormBuilder, Validators } from "@angular/forms";

@Component({
  selector: "app-track-form",
  standalone: true,
  imports: [ReactiveFormsModule],
  template: `
    <form [formGroup]="form" (ngSubmit)="submit()">
      <input formControlName="title" placeholder="课程标题" />
      @if (form.controls.title.invalid && form.controls.title.touched) {
        <span class="error">标题必填(至少 2 字)</span>
      }
      <input formControlName="slug" placeholder="slug" />
      <button type="submit" [disabled]="form.invalid">保存</button>
    </form>
  `,
})
export class TrackFormComponent {
  private fb = inject(FormBuilder);

  form = this.fb.nonNullable.group({
    title: ["", [Validators.required, Validators.minLength(2)]],
    slug: ["", [Validators.required, Validators.pattern(/^[a-z0-9-]+$/)]],
  });

  submit() {
    if (this.form.invalid) return;
    console.log(this.form.getRawValue());
  }
}

模板驱动(速览)

<input [(ngModel)]="title" name="title" required #t="ngModel" />

需 FormsModule;双向绑定类似 Vue v-model。

与 React/Next 对照

Angular ReactiveReact 受控组件Next.js
模型FormGroupuseState 对象同 React
校验Validators手动 / zod同 React + Server Actions
错误 UIcontrol.invalid字段 state同 React

Next.js 15+ 可用 Server Actions 提交;Angular SPA 通常 POST 到 Spring Boot /api/*。

练习

  • 为 slug 加自定义校验:禁止 关键字
admin
  • 提交时调用 TrackService create()
  • 小结

    复杂表单用 FormGroup + Validators;模板驱动适合快速原型。 下一课服务与 DI。

    加载本节练习…
    ← 上一课指令与管道下一课 →服务与依赖注入