正如Angular documentation所说,我们可以在表单中使用formControlName:

<h2>Hero Detail</h2>
<h3><i>FormControl in a FormGroup</i></h3>
<form [formGroup]="heroForm" novalidate>
    <div class="form-group">
        <label class="center-block">Name:
            <input class="form-control" formControlName="name">
        </label>
    </div>
</form>

正如他们所说...

在没有父FormGroup的情况下,[formControl]="name"更早地工作,因为该指令可以独立运行,也就是说,它不在FormGroup中工作.对于父FormGroup,名称输入需要语法formControlName=name,以便与类中正确的FormControl相关联.该语法告诉Angular查找父FormGroup,在本例中是heroForm,然后在该组中查找名为name的FormControl.

不管怎样,几个月前我问过this个人,想弄清楚formControlName[formControl]之间的区别.

现在我的问题是:用formControlName来嵌套表单组怎么样?

例如,如果我有以下表单 struct :

this.myForm = fb.group({
    'fullname': ['', Validators.required],
    'gender': [],
    'address': fb.group({
        'street': [''],
        'houseNumber': [''],
        'postalCode': ['']
    })
});

使用formControlName将"street"(或"houseNumber"或"postalCode")绑定到相关HTML元素的正确方法是什么?

推荐答案

例如,您可以使用Form group,它基本上是一组控件(控件指html表单中给定的字段),在您的typescript语法中定义,并使用formControlName指令绑定到html元素

this.myForm = fb.group({
    'fullname': ['', Validators.required],
    'gender': [],
    'address': fb.group({
        'street': [''],
        'houseNumber': [''],
        'postalCode': ['']
    })
});

模板:

<form [formGroup]="myForm" >
   <div class="form-group">
      <label for="fullname">Username</label>
      <input type="text" id="username" formControlName="fullname" class="form-control">            
   </div>
   <div class="radio" *ngFor="let gender of genders">
      <label>
      <input type="radio" formControlName="gender" [value]="gender">{{ gender }} </label>
   </div>
   <div formGroupName="address">
      <div class="form-group">
         <label for="street">Username</label>
         <input type="text" id="username" value="street" formControlName="street" class="form-control">            
      </div>
      <div class="form-group">
         <label for="houseNumber">Username</label>
         <input type="text" id="username" value="street" formControlName="houseNumber" class="form-control">            
      </div>
      <div class="form-group">
         <label for="postalCode">Username</label>
         <input type="text" id="username" value="street" formControlName="postalCode" class="form-control">            
      </div>
   </div>
</form>

Form Group可以由嵌套的Form Group组成,层次 struct 可以继续,但在访问值时,它相当简单.

Angular相关问答推荐

尾风手风琴中的Ngor

AG网格Angular 快捷菜单调用函数

如何使用带有17角的Swiper 11.0.5元素

MAT-复选框更改事件未在onSubscriberCheck函数中返回选中的值

如何确保[共享]组件是真正的哑组件?(Angular )

如何使用来自不同可观测对象的值更新可观测对象

如何捕获生命周期方法中抛出的Angular组件错误?

自定义垫日历中选定的日期(Angular material )

Angular Mat Select 显示键盘焦点和鼠标悬停焦点的问题

无法绑定到formControl,因为它不是input的已知属性

Observable转换为Observable

在生产模式下使用带Angular 的 livekit

Angular 13 Sass 模块无法在编译中正确导入文件

没有调用订阅的原因是什么?

如何在angular material中使用输入类型文件

Angular @NGRX中这三个点的含义是什么

默认情况下如何在Angular中 Select mat-button-toggle

实现autocomplete功能

升级到 angular-6.x 会给出Uncaught ReferenceError: global is not defined

Hot and Cold observables:有 hot和 cold运算符吗?