angular - 如何在 Angular 6 中构建具有多个组件的表单?

标签 angular typescript angular6 angular-reactive-forms angular-forms

我正在尝试构建跨多个组件的 Reactive-Form,就像这样

<form [formGroup]="myForm" (ngSubmit)="onSubmitted()">
   <app-names></app-names>
   <app-address></app-address>
   <app-phones></app-phones>
   <button type="submit">Submit</button>
</form>

当我尝试提交时,我得到的是空对象。

Stackblitz Here

最佳答案

进行如下修改

1.只使用一个FormGroup,而不是为每个组件创建新的FormGroup

2.你有 @Input 用于 FormGroup 但是你没有作为输入传递。

3.从子组件中移除FormBuilder

app.component.html

<form [formGroup]="myForm" (ngSubmit)="onSubmitted()">
    <app-names [myForm]="myForm"></app-names>
    <app-address [myForm]="myForm"></app-address>
    <app-phones [myForm]="myForm"></app-phones>
    <button type="submit">Submit</button>
</form>

地址.component.ts

import { Component, OnInit, Input} from '@angular/core';
import { FormControl, FormGroup,FormBuilder } from '@angular/forms';

@Component({
  selector: 'app-address',
  templateUrl: './address.component.html',
  styleUrls: ['./address.component.css']
})
export class AddressComponent implements OnInit {

  @Input() myForm: FormGroup;
  constructor(
    private formBuilder: FormBuilder
  ) { }

  ngOnInit() {
    this.myForm.addControl("homeAddress" , new FormControl());
    this.myForm.addControl("officeAddress" , new FormControl());
  }

}

对其他组件进行类似的更改。

关于angular - 如何在 Angular 6 中构建具有多个组件的表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52803398/

相关文章:

javascript - 对象取消订阅错误: object unsubscribed

javascript - 每个循环语法的 typescript 错误

angular - 支持 ngRx/data 的正确 Angular 版本是什么?

javascript - 页脚中的水平居中链接与具体化

typescript - 将属性添加到 HtmlElement

Angular react 形式 : valueChanges doesn't work as expected

angular - 在 Angular 中将垂直滚动设置为固定高度的垫子表

angular - 无法在 VS 代码中调试 dockerize Angular 应用程序 - 无法连接到目标 : socket hang up

javascript - 根据子状态 Angular 更改父状态/类别

angular - Mat Input 两种方式绑定(bind)到值属性不起作用