If you want to display multiple forms in your application, you can define an array in the controller and use ng-repeat to render them:
Here is how you can achieve this:
<div ng-app="myApp" ng-controller="MyController">
<div ng-repeat="form in forms">
<hr/>
<form name="myForm" ng-init="name = form.name">
{{name}}
<input name="myInput" type="text" ng-model="myInputValue"></input>
<input type="button" value="Save" ng-click="saveForm(this)" ng-disabled="!myForm.$dirty"></input>
</form>
</div>
<hr/>
<input type="button" value="Create form" ng-click="createForm()"></input>
</div>
In the JavaScript part of your code:
angular.module("myApp", []).controller('MyController',
['$scope', function($scope){
$scope.forms = [{name: "form1"}];
$scope.createForm = function(){
$scope.forms.push({name: "form" + ($scope.forms.length + 1)});
};
$scope.saveForm = function(formScope){
alert("Save called for " + formScope.name + ", myInputValue = " + formScope.myInputValue);
};
}]
You can check out the working example on http://jsfiddle.net/nfvjv0uv/2/.
Note that when using ng-repeat, a child scope is created for each iteration which we handle in the save method.