Angular でフォームを送信

Oluwafisayo Oluwatayo 2023年1月30日
  1. Angular で ng-model メソッドを使用して送信する単純なフォーム
  2. Angular の ng-submit メソッドを使用した単純なフォーム送信
Angular でフォームを送信

通常の HTML でフォームを送信するのは非常に簡単ですが、Angular にとってはかなりの試練になる可能性があります。Angular は、送信する前にデータを操作する機会を与えるために、フォームの送信を常に中断します。

AngularJS でフォームを正常に送信できるようにする方法を見ていきます。

まず、入力領域またはテキスト領域のすべてのデータを収集し、ユーザーが表示できるアイテムにする ng-model メソッドについて説明します。

ただし、ng-submit メソッドを使用すると、送信するデータをより細かく制御できます。入力にアクションまたはアイテムがない場合、ng-submit はフォームの送信を防ぎます。

ここでは、通常の Angular ではなく AngularJS を扱っていることを忘れないでください。したがって、主に HTMLapp.js を使用します。

Angular で ng-model メソッドを使用して送信する単純なフォーム

ng-model メソッドの場合、次のように HTML を設定します。

<div ng-app="myApp">
  <form name="saveTemplateData" action="#" ng-controller="FormCtrl">
    First name: <br /><input type="text" name="form.firstname" /> <br /><br />
    Email Address: <br /><input type="text" ng-model="form.emailaddress" />
    <br /><br />

    <textarea rows="3" cols="25">
Describe your reason for submitting this form </textarea
    >

    <br /><br />

    <input type="radio" ng-model="form.gender" value="female" />Female
    <input type="radio" ng-model="form.gender" value="male" />Male <br />

    <br /><br />

    <input type="checkbox" ng-model="form.member" value="true" /> Already a
    member <input type="checkbox" ng-model="form.member" value="false" /> Not a
    member

    <br /><br />

    <input type="file" ng-model="form.file_profile" id="file_profile" /><br />
    <input type="file" ng-model="form.file_avatar" id="file_avatar" />

    <br /><br />

    <input type="submit" ngClick="Submit" />
  </form>
</div>

次に、app.js に次のコードを記述します。

import angular from 'angular';
import '@uirouter/angularjs';

var app = angular.module('myApp', []);
app.controller('FormCtrl', function ($scope, $http) {
  $scope.data = {
    firstname: 'default',
    emailaddress: 'default',
    gender: 'default',
    member: false,
    file_profile: 'default',
    file_avatar: 'default',
  };
  $scope.submitForm = function () {
    console.log('posting data....');
    $http
      .post(
        'http://posttestserver.com/post.php?dir=jsfiddle',
        JSON.stringify(data)
      )
      .success(function () {
        /*success callback*/
      });
  };
});

$scope.data は、送信のためにすべてのデータが保存される場所です。

Angular の ng-submit メソッドを使用した単純なフォーム送信

ng-submit は、はるかに少ない簡単なコーディングを提供します。

HTML の場合:

<!DOCTYPE html>
<html>

    <head>

        <title>Form input text</title>

        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>

    </head>

    <body>

        <div ng-app="myApp" ng-controller="myCtrl">

            <form ng-submit="submit(form)" >

                Firstname: <input type="text" ng-model="form.firstname" /><br />
                Lastname: <input type="text" ng-model="form.lastname" /><br />

                <hr />

                <input type="submit" value="Submit" />

            </form>
          
            <hr />          

            <p>Firstname: {{ form.firstname }}</p>
            <p>Lastname: {{ form.lastname }}</p>

            <pre>Submit Form: {{ formData }} </pre>

        </div>

       
	</body>

</html>

次に、app.js で:

import angular from 'angular';
import '@uirouter/angularjs';

var app = angular.module('myApp', []);

app.controller('myCtrl', [
  '$scope',
  function ($scope) {
    $scope.submit = function (formData) {
      $scope.formData = formData;

      console.log(formData); // object
      console.log(JSON.stringify(formData)); // string
    };
  },
]);
Oluwafisayo Oluwatayo avatar Oluwafisayo Oluwatayo avatar

Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.

LinkedIn

関連記事 - Angular Form