2016-09-29 90 views
2

我有一个传统的后端服务器,处理表单数据作为请求参数。 我们将angular2放在前端。我想提交angular2表单,以便所有字段都作为请求参数发送,以便不必更改旧版后端。 要做到这一点,我有:Angular2 ngNoForm也做角度表单验证

<form ngNoForm action="http://localhost/config/api/v1/angular/submit" target="_blank" method="POST"> 

但我也想用angular2表单验证提交按钮:

<form #f="ngForm" ngNoForm action="http://localhost/config/api/v1/angular/submit" target="_blank" method="POST"> 
<button type="submit" [disabled]="!f.form.valid" class="small round">Submit</button> 

但是这并不工作 - angular2主诉其#F =” ngForm“时声明ngNoForm。

有没有办法像往常一样做angular2表单验证,并提交表单作为常规请求参数?

+0

我使用ReactiveForms与AJAX请求一起实现这一目标。我没有使用'ngNoForm'的经验。我将我的请求参数添加到一个字符串数组中,像'arr.join('&')'一样加入它们,并用'encodeURI(body)'对它进行编码。这绝对比它更多,但这是组织表单数据的要点。在你的TS中。如果这是您可以使用旧版应用程序进行的操作,我可以发布更详细的答案。 – DankestMemes

+0

不幸的是,由于整个表单都是元数据驱动的,我并不知道页面上的哪些字段。我想我可以找出使用JavaScript的网页上的哪些字段,然后实施您提到的解决方案。谢谢。 – vanval

回答

3

队提交使用纯JS,这个工作对我来说:

<form ngNoForm [formGroup]="myForm" action="http://test.local/process_post.php" target="_blank" method="POST"> 
    <input formControlName="alpha" name="alpha"/> 
    <input formControlName="beta" name="beta"/> 
    <button type="submit" [disabled]="!myForm.valid" onclick="submit()">SEND</button> 
</form> 
+0

我不想使用formGroup,即我想使用[ngModel]绑定方式,因为我的表单是基于服务器发送的数据非常动态的,并且只有模板驱动的表单(即使用ngModel)对我们来说工作得很好。 – vanval