有没有办法从外部按钮提交Angular 2模型驱动形式(反应形式)?

时间:2016-11-30 04:42:44

标签: angular

我正在尝试通过标签外的按钮提交我的被动表单。之前,这个表单是模板驱动的,我可以这样做:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

}

如果'f'是表格名称。

但是如果我使用这种模型驱动形式的方法,则显示错误:

<button (click)="f.ngSubmit.emit()"></button>

我可以模拟这种行为,在表单中编写隐藏按钮并为外部按钮设置click事件:

TypeError: Cannot read property 'emit' of undefined

这似乎不是最好的方法......还有另一种更好的方法吗?

谢谢。

编辑:

如果我在表单中添加一个id字段,但我认为这不是最好的方法......

<form [formGroup]="loginForm" (ngSubmit)="login()">
   ...
   <button #submit type="submit" style="visibility:hidden"></button>
</form>

<button (click)="submit.click"></button>

2 个答案:

答案 0 :(得分:0)

要从表单外部调用提交按钮,您应该使用按钮上的“表单属性”来引用所需的表单:

&#xA;&#xA;
 &lt; form [formGroup] =“loginForm”(ngSubmit)=“login()”id =“thatForm”&gt;&#xA; ...&#XA;&LT; /形式&GT; &#xA;&lt; button type =“submit”form =“thatForm”&gt;&lt; / button&gt;&#xA;  
&#xA;&#xA;

尽可能看,它是普通的旧HTML,而不是一个奇怪的黑客,它支持所有好的浏览器(也就是除了IE之外的所有人( http://caniuse.com/#feat=form-attribute

&#xA;

答案 1 :(得分:-3)

使用此:

ViewChild('f') f: FormGroupDirective