Angular2 - 以另一种形式实现的表单 - 如何获取值

时间:2016-09-06 03:50:25

标签: angular2-forms angular2-formbuilder

我有2个表格。一个父母表格,一个儿童表格。它看起来像这样:

<form [formGroup]="form" (submit)="makeSomething()">
    <input type="text" formControlName="test" />
    <some-form-component></some-form-component>
    <input type="submit" />
</form>

对于some-form-component我使用这样的文件:

<form [formGroup]="form">
    <input type="text" formControlName="somechildfield" />
</form>

我父组件的组件如下所示:

import {Component, OnInit} from "@angular/core";
import {FormBuilder} from "@angular/forms";

@Component({
    selector: 'my-parent-form',
    templateUrl: 'my-parent.form.html'
})
export class ParentFormComponent implements OnInit {
    private form: any;

    constructor(private builder: FormBuilder) {}

    ngOnInit(): void {

        this.form = this.builder.group({
            'test': [''],
        });
    }
    makeSomething() {
        console.log( this.form.value );
    }
}

SomeFormComponent在没有makeSomething方法的情况下看起来很相似 我的问题是:当我在makeSomething()方法中获取值时如何?

谢谢!

1 个答案:

答案 0 :(得分:1)

在父级中,您必须为子组件提供formControlName,并在formBuilder中包含子组件。

      <my-child formControlName="account"></my-child>

在child中,您实现了ControlValueAccessor接口。

例如,尝试this plunker