提交表格时,Angular 2 - NgForm为null

时间:2017-07-08 12:15:46

标签: angular

大家好,我正在做一个" dinamic"使用Angular的表单,我在获取表单中输入的值时遇到一些问题,我的代码是:

HTML

<form  #myForm="ngForm" (ngSubmit)="onSubmit(myForm)" *ngFor="let con of controls" novalidate>
  <div class="form-group" *ngIf = "con.type != 'submit'">
    <label for="{{con.id}}">{{con.label}}</label>
    <input [(ngModel)]="con.name" type="{{con.type}}" class="{{con.class}}" name="{{con.id}}">
 </div>
 <input  *ngIf = "con.type == 'submit'"  type="submit" class="{{con.class}}" value={{con.label}}> 
</form> 

组件:

import { Component ,Input} from '@angular/core';
import { NgForm } from '@angular/forms';


@Component({
  selector: 'form-tag',
  templateUrl: './form.html',
})

export class FormComponent {
    @Input() controls: any[];

    onSubmit(sub: NgForm)
    {
        console.log(sub.email);
    }
}

问题是,当我提交表单console.log(sub.email);返回一个空对象

2 个答案:

答案 0 :(得分:1)

由于你使用ngForm,它是一个模板驱动的形式,而不是一个被动的形式。在模板驱动的表单中,您需要将myForm.value传递给onSubmit():

onSubmit(myForm.value)

此外,从您的代码示例中,我们还不清楚它是什么。

答案 1 :(得分:0)

我确实不确定您要尝试做什么,但似乎您使用<form>标记循环控件,而不仅仅使用{{1}和div.form-group本身。

也许将它们包裹在<input />中并循环显示它而不是<ng-template />标记?

这样的事情:

<form>