在Angular中动态重置ng-form

Dea*_*ake 6 javascript angularjs

我已经采取了看看下面:重设表单在AngularJS棱角分明的子窗体数据和重置验证这些我想创建一个动态表单复位/清除功能,会是什么样子像下面这样:

$scope.clearSection = function(formName){

    $scope.formName.$setPristine();
    $scope.formName.$setUntouched();
};
Run Code Online (Sandbox Code Playgroud)

是否可以在角度中创建一个动态清除函数,其中表单名称动态传递给此函数?

Car*_*lli 5

plunkr示例:http://plnkr.co/edit/lnGym0vKsANL6oks30RG

$scope.resetForm = function(formName) {
  var form = $scope[formName];
  form.$setUntouched();
  form.$setPristine();
}
Run Code Online (Sandbox Code Playgroud)

注意:您仍然需要重置输入值!

根据文档:

https://docs.angularjs.org/api/ng/type/form.FormController

$ setPristine(); 将表单设置为原始状态。

可以调用此方法以删除“ ng-dirty”类并将表单设置为其原始状态(ng-pristine类)。此方法还将传播到此窗体中包含的所有控件。

当我们要在保存或重置表单后“重用”表单时,将表单设置回原始状态通常很有用。

$ setUntouched() ; 将表单设置为未更改的状态。

可以调用此方法以删除“ ng-touched”类并将表单控件设置为未触摸状态(ng-untouched类)。

将表单控件设置回原始状态时,将其设置回原始状态通常很有用。

$ setPristine和$ setUntouched仅更改表单控件的类,而不更改值。这意味着您仍然需要重置值。