Angular でフォームを送信
Oluwafisayo Oluwatayo
2023年1月30日
通常の HTML
でフォームを送信するのは非常に簡単ですが、Angular にとってはかなりの試練になる可能性があります。Angular は、送信する前にデータを操作する機会を与えるために、フォームの送信を常に中断します。
AngularJS でフォームを正常に送信できるようにする方法を見ていきます。
まず、入力領域またはテキスト領域のすべてのデータを収集し、ユーザーが表示できるアイテムにする ng-model
メソッドについて説明します。
ただし、ng-submit
メソッドを使用すると、送信するデータをより細かく制御できます。入力にアクションまたはアイテムがない場合、ng-submit
はフォームの送信を防ぎます。
ここでは、通常の Angular ではなく AngularJS を扱っていることを忘れないでください。したがって、主に HTML
と app.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
};
},
]);
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