Angular-Formly: Adición de campos de formulario dinámicamente al hacer clic en el usuario

¿Cómo voy a agregar la capacidad en el formulario para que el usuario pueda agregar más campos de entrada haciendo clic en “Agregar”. Esto usando la biblioteca de forma angular.

Aquí hay un ejemplo de la característica exacta pero hecho usando solo angularjs.

Agregar campos de formulario dinámicamente

Ver este Plunker

Aquí hay un ejemplo de lo que necesita. Como puede ver en el plunker, hay un TextArea que puede crearse dinámicamente al hacer clic en el botón. Las TextAreas creadas también se pueden eliminar con el botón remove haga clic en.

Ver el HTML a continuación

 

y el JS será el siguiente

 var app = angular.module('myApp', []); app.controller('inspectionController', function($scope, $http) { $scope.choiceSet = { choices: [] }; $scope.quest = {}; $scope.choiceSet.choices = []; $scope.addNewChoice = function() { $scope.choiceSet.choices.push(''); }; $scope.removeChoice = function(z) { $scope.choiceSet.choices.splice(z, 1); }; }); 

Pongo un simple ejemplo.

 var app = angular.module("app",[]); app.controller("MyCtrl" , function($scope){ $scope.data ={ names:[{ name:""}] }; $scope.addRow = function(index){ var name = {name:""}; if($scope.data.names.length <= index+1){ $scope.data.names.splice(index+1,0,name); } }; $scope.deleteRow = function($event,name){ var index = $scope.data.names.indexOf(name); if($event.which == 1) $scope.data.names.splice(index,1); } }); 
  
{{data|json}}

El ejemplo simple también funciona borrando en cualquier orden:

http://plnkr.co/edit/c0FbjBJkHtDYRKslz0iq?p=preview

o:

algunos html:

        

script.js:

 var app = angular.module('oneApp', []); app.controller('ctrl', function($scope){ $scope.tablerows = []; $scope.addNewRow = function () { var row_id; var tablerows = $scope.tablerows; if(tablerows.length > 0){ row_id = tablerows[tablerows.length-1]; row_id = row_id +1; }else{ row_id = 0; } $scope.tablerows.push(row_id); }; $scope.removeRow = function (index) { $scope.tablerows.splice(index,1); }; } );