我是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。任何人都可以向我解释一下....下面是一个关于这个的插件的链接。
答案 0 :(得分:3)
它按预期工作。
您的表单具有单独的值,但您将结果保存到同一变量value
submit(form) {
this.value = form;
}
打印出来
<pre>
{{value | json }}
</pre>
即。提交一份表格不会影响另一份。它仅影响公共变量value
。
如果您需要单独处理,请使用不同的提交功能。
如果你想使用相同的功能,那么你需要通过不同的值。