2016-09-29 5 views
2

リクエストパラメータとしてフォームデータを処理する従来のバックエンドサーバーがあります。 フロントエンドにangular2を配置しています。レガシバックエンドを変更する必要がないように、すべてのフィールドがリクエストパラメータとして使用されるように、angle2フォームを送信します。Angular2 ngNoFormと角度フォームの有効性確認

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

しかし、私はまた、送信ボタンにangular2フォーム検証を使用する場合: - angular2は=#fの文句」

<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> 

しかし、これは動作しません。私はこれを行うには ngNoFormが宣言されたときに「ngForm」と表示されます。

いつものようにangular2フォームの検証を行う方法はありますか?また、フォームを定期的なリクエストパラメータとして送信する方法はありますか?

+0

を、私はこれを達成するためにAJAX要求と共にReactiveFormsを使用しています。私は '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

関連する問題