【问题标题】:Unable to reset an Angular Material design Form from controller无法从控制器重置 Angular Material 设计表单
【发布时间】:2016-07-29 07:02:30
【问题描述】:

我有一个带有 3 个输入字段的 Angular Material 设计表单,其中有 required 选项。单击提交按钮后,我无法将表单重置为默认状态。我正在使用$setPristine 将表单更改为原始状态,但提交后出现红色错误行。提交表单后有什么方法可以消除这些错误。

谢谢。

Codepen 链接:http://codepen.io/sateesh2499/pen/pbkjVV

查看:

<div ng-controller="AppCtrl" layout="column" ng-cloak="" class="inputdemoErrors" ng-app="MyApp">

  <form name="careersForm">
        <div class="careersContainer">
            <md-content>
                <div layout-gt-sm="row">
                    <md-input-container class="md-block" flex-gt-sm>
                        <label>Job Title</label>
                        <input type="text" name="jobTitle" ng-model="careers.jobTitle" required>
                    </md-input-container>
                    <md-input-container class="md-block" flex-gt-sm>
                        <label>Job Location</label>
                        <input type="text" name="jobLocation" ng-model="careers.jobLocation" required>
                    </md-input-container>
                    <md-input-container class="md-block" flex-gt-sm>
                        <label>Job Category</label>
                        <input type="text" name="jobCategory" ng-model="careers.jobCategory" required>
                    </md-input-container>
                </div>

            </md-content>
        </div>
        <div class="row text-center">
            <div class="col-sm-12">
                <md-button class="md-raised" style="width: 200px"
                           ng-click="postJob()">Submit</md-button>

            </div>
        </div>
    </form>
Pristine: {{careersForm.$pristine}}
</div>

控制器:

angular.module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])

.controller('AppCtrl', function($scope) {
  $scope.careers = {};
  $scope.postJob = function(){
    // after successful posting
    $scope.careers = {};
    $scope.careersForm.$setPristine();
  }
});

【问题讨论】:

    标签: javascript angularjs forms angular-material


    【解决方案1】:

    调用$setPristine后添加$scope.careersForm.$setUntouched();即可解决。

    我已经分叉了你的 plunker,你可以看到它在哪里工作。 Plunker here

    $scope.postJob = function(){
        // after successful posting
        $scope.careers = {};
        $scope.careersForm.$setPristine();
        $scope.careersForm.$setUntouched();
      }
    

    无论如何,我认为您的代码应该可以工作......所以可能是一个错误。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2019-12-11
      • 2014-10-13
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      相关资源
      最近更新 更多