2016-09-29 58 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