我们可以在同一个Angular2组件中有2个表单

时间:2017-03-16 13:06:03

标签: angular angular2-forms

我是Angular 2的新手,想知道我们可以在一个角度2组件中有2个表格。以下是我的form.component.html的样子。

<div>
 <span>Forms Using ngModel Directive</span>
  <form #form="ngForm" (ngSubmit)="submit(form.value)">
  <div>
    <label>Firstname:</label>
    <input type="text" name="firstname" ngModel>
  </div>
  <div>
    <label>Lastname:</label>
    <input type="text" name="lastname" ngModel>
  </div>
  <div>
    <label>Street:</label>
    <input type="text" name="street" ngModel>
  </div>
  <div>
    <label>Zip:</label>
    <input type="text" name="zip" ngModel>
  </div>
  <div>
    <label>City:</label>
    <input type="text" name="city" ngModel>
  </div>

  <button type="submit">Submit</button>
</form>

<pre>
 {{form.value | json}}
</pre>

<h4>Submitted</h4>
<pre>    
 {{value | json }}
</pre>

<span>Same Form using ngModelGroup & ngModel Directive(Notice Difference      in the JSon)</span>
  <form #form1="ngForm" (ngSubmit)="submit(form1.value)">
  <div ngModelGroup="name">
    <label>Firstname:</label>
    <input type="text" name="firstname1" ngModel>
    <label>Lastname:</label>
    <input type="text" name="lastname1" ngModel>
  </div>
  <div ngModelGroup="address">
    <label>Street:</label>
    <input type="text" name="street1" ngModel>

    <label>Zip:</label>
    <input type="text" name="zip1" ngModel>

    <label>City:</label>
    <input type="text" name="city1" ngModel>
  </div>

  <button type="submit">Submit</button>
</form>

<pre>
 {{form1.value | json}}
</pre>

<h4>Submitted</h4>
<pre>    
  {{value | json }}
</pre>

如果你看到上面我在同一个组件中有两个表单。现在,当我在相应的字段中输入值时,我可以看到JSON正在被适当地创建...但是当我提交任何一个表单时,提交的JSON以相同的方式创建,即使另一个表单可能为空。这是因为HTML页面只能包含一个表单而不涉及任何类型的ajax。任何人都可以向我解释一下....下面是一个关于这个的插件的链接。

https://plnkr.co/edit/ZoCOzlCNa82ugbYiXyjK?p=preview

1 个答案:

答案 0 :(得分:3)

它按预期工作。

您的表单具有单独的值,但您将结果保存到同一变量value

submit(form) {
  this.value = form; 
}

打印出来

<pre>    
  {{value | json }}
</pre>

即。提交一份表格不会影响另一份。它仅影响公共变量value

如果您需要单独处理,请使用不同的提交功能。

如果你想使用相同的功能,那么你需要通过不同的值。