0

我是初学者使用AngalurJs和材料AngalurJs
我需要解决一个小问题
我需要隐藏的错误消息,当用户点击复位按钮
我试过$setUntouched$setPristine
更改状态的输入,但不能掩盖消息
我也试过ng-ifng-show和不工作
HTML代码,我用了NG的消息:隐藏NG-消息

<div ng-messages="formName.fieldName.$error"> 
    <div ng-message="required">...</div> 
</div> 

而对于复位形式的js代码:

<button ng-click="onclear">Clear</button> 

// on controller js file code : 
$scope.onclear = function(){ 
    $scope.formName.$setUntouched(); 
    $scope.formName.$setPristine(); 
} 

回答

1

因此,这里是我看到可能存在的问题:

要调用的函数,你需要使用括号onclear

<button ng-click="onclear()">Clear</button> 

如果某个字段出现'required'错误,则下面的代码将始终显示消息,字段是否被触摸,是否变脏:

<div ng-messages="formName.fieldName.$error"> 
    <div ng-message="required">...</div> 
</div> 

要隐藏基于$touched$dirty的消息,可以使用这样的事情:

<div ng-messages="formName.fieldName.$error" 
    ng-show="formName.fieldName.$dirty && formName.fieldName.$touched"> 
    <div ng-message="required">...</div> 
</div> 

另外,还要确保你包括angular-messages.js文件:

<head> 
    <!-- include angular and whatever --> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular-messages.js"></script> 
    <!-- ... --> 
</head> 

而且您添加'ngMessages'到创建应用程序模块时角度依赖关系列表:

angular.module('app', ['ngMessages']); 

如果你不这样做最后的两件事情,ng-messageng-messages属性将没有任何效果,所有的div元素将被显示领域无关的错误(除非该ng-show我添加隐藏)。

退房这个例子中,我提出:https://plnkr.co/edit/fuqsr6WRdBKoebPq1Igs?p=preview

在我绑定值到控制器,而不是$范围的例子,这就是为什么你会看到$ctrl,希望不会混淆你。