EnriqueMark
Angular

2026-04 简体中文
//模板表單
[(ngModel)]="cityValue" [ngModelOptions]="{standalone: true}"
//響應式表單
[formGroup]="form"
formControlName="enName"

这里有个坑,这俩是不能并用的,响应式表单内如果要单独加ngModel,就必须给他加上单独模式。因为响应式表单本身就自带双向绑定,都加的话就会冲突。

取资料的时候一定要确定资料到底有没有上去,这个很关键,有些地方需要显示更新,所以参考前人的写法很重要。

所以最好是保持一致性,实际上form完全是可以嵌套的,如果需要再讨一个group,那就直接套。

// 1. formGroup - 绑定整个表单,根節點聲明
<form [formGroup]="myForm">
// 2. formControlName - 绑定单个控件,下同,對應form内部的key
<input formControlName="name">
// 3. formGroupName - 绑定嵌套表单组,formGroup内部再套一個Group的時候就用這個
<div formGroupName="address">
// 4. formArrayName - 绑定表单数组
<div formArrayName="skills">
  @for (skill of skills.controls; track $index) {
    <input [formControlName]="$index">
  }
</div>

另一个方面,[formControl]是一个和[formGroup]一样可以单独存在的对象,但[formArray]则是 不存在的,因为formArr很少会但

{ emitEvent: false }是为了防止出发无限循环,比如在一个副作用的时候,在里面更新一个可能导致副作用的表,就得把这个加进去,否则会无限循环,这个的意思就是阻止其向外发送更新信号。