Angularjs 如何在不需要触摸输入的情况下强制ngMessages显示错误
我正在开发多页web应用程序(不是一个角SPA)。 在某些情况下,我必须呈现带有嵌入验证错误的页面(如HTTP POST后失败的登录尝试)。 我希望这些错误在页面加载时以角度显示。 我已经创建了自定义验证器(现在的指令称之为Angularjs 如何在不需要触摸输入的情况下强制ngMessages显示错误,angularjs,Angularjs,我正在开发多页web应用程序(不是一个角SPA)。 在某些情况下,我必须呈现带有嵌入验证错误的页面(如HTTP POST后失败的登录尝试)。 我希望这些错误在页面加载时以角度显示。 我已经创建了自定义验证器(现在的指令称之为odd)。 但似乎显示它们的唯一方法是模糊每个单独的输入字段 <md-input-container> <label>Email</label> <input name="j_username" type="email" ng
odd
)。
但似乎显示它们的唯一方法是模糊每个单独的输入字段
<md-input-container>
<label>Email</label>
<input name="j_username" type="email" ng-model="j_username" odd="false" md-autofocus />
<div ng-messages="login.j_username.$error">
<span ng-message="odd">Some error message prerendered on a server side</span>
</div>
</md-input-container>
电子邮件
在服务器端预先呈现一些错误消息
以下是代码笔的链接:
单击电子邮件,然后松开焦点,您将看到出现错误消息
问题是:如何强制angular在页面加载时显示表单上所有字段的所有验证消息?这可能是一种快捷方式,但在我将此设置超时添加到自定义验证程序后,页面加载时会根据需要出现错误。 如果有人知道更好的方法,请告诉我
app.directive("hasVe", function() {
return {
restrict : "A",
require : "ngModel",
link : function(scope, element, attributes, ngModel) {
var hasVe = attributes.hasVe;
ngModel.$validators.hasVe = function(modelValue) {
return hasVe !== "true";
};
// NOTE: This looks like a shortcut, but it works
setTimeout(function() {
ngModel.$touched = true;
scope.$apply();
}, 100);
}
};
});
这里有一个更新的片段:我自己刚刚遇到这个问题。此线程非常有用: 您要做的是将ng show=“login.$submitted”添加到您的ng messages元素中。 ng消息仍将像以前一样工作,如果输入被“触摸”或修改,则会弹出错误消息,但它也会添加您想要的内容,即在用户尝试提交时显示错误消息 当用户尝试提交表单时,角度表单变量login.$submitted将设置为true(即使提交未成功) 这是绝对必要的,如果你是使用角材料。然后您甚至不需要使用ng show=“login.$submitted”
<div ng-messages="login.j_username.$error" ng-show="login.$submitted">
<span ng-message="odd">Some error message prerendered on a server side</span>
</div>
angular.module('app', ['ngMessages']);