首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何组合ng消息消息

如何组合ng消息消息
EN

Stack Overflow用户
提问于 2015-04-16 10:34:08
回答 3查看 4.6K关注 0票数 5

我是AngularJS的新手,但我已经搜索了很多遍,找不到这个问题的有效答案,也许这是不可能的方式,我在脑海中。

我想要的是能够组合错误条件,以便在ng-讯息模块中使用更通用的错误消息。这节省了我们大量的时间来维护文本,因为我们的应用程序是多语言的。在我的示例中,最好将最小长度、最大长度和模式组合在一起,并让它引用1条通用消息。我让它工作的唯一方法是为每个类型分别创建一个ng消息,然后重用错误文本,这对我来说似乎是多余的。希望这是我所缺少的东西,比如不知道什么时候/如何使用,或者用得着。

代码语言:javascript
复制
<form id="myFormId" name="myForm" novalidate>
  <input name="sText" ng-model="someText" 
  type="text"
  required
  ng-minlength="8" minlength="8"
  ng-maxlength="8" maxlength="8" 
  ng-pattern="/^[a-zA-Z0-9]{8,8}$/" pattern="/^[a-zA-Z0-9]{8,8}$/">

<div ng-messages="myForm.sText.$error" role="alert">
  Error message:
    <div ng-message="required">Required text missing</div>
    <div ng-message="minlength || maxlength || pattern">Not right length or bad pattern - Why does this not work? I have also tried using comma , instead of || </div>
    <div ng-message="minlength">Too short - this does work but does not change even if this is removed</div>
</div>
</form>

我创建了这个简单的普伦克来说明我想要做的事情:

编辑1

我确实意识到我可以使用单个regex模式表达式,但是上面的验证严格地是为了重现问题并展示一个示例。我还有其他的验证,我想结合起来,不能用一个单一的模式来表达。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-16 11:29:04

ng-messages将在ng-messages指令元素中显示错误消息,但这有限制,您只能在ng-messages div中显示单个错误ng-message

因此,如果要在ng-message指令中显示多个ng-messages,则需要在ng-messages指令元素上添加ng-messages-multiple属性。

Docs链接

标记

代码语言:javascript
复制
<div ng-messages="myForm.sText.$error" role="alert" ng-messages-multiple>
    Error message:
    <div ng-message="required">
        Required text missing
    </div>
    <div ng-message="minlength, maxlength, pattern">
        Not right length or bad pattern - Why does this not work? I have also tried using comma , instead of ||(OR)
    </div>
    <div ng-message="minlength">
        Too short - this does work but does not change even if this is removed
    </div>
</div>

工作普朗克尔

更新

经过角度文档更新后,我知道ng-messages不支持在ng-messages中显示多个ng-message错误,为了解决这个问题,应该在ng-messages元素上设置ng-messages-multiple属性。

来自Docs的

默认情况下,ngMessages一次只显示一个错误。但是,如果您希望显示所有消息,那么可以在包含ng-messages-multiple指令的元素上使用ngMessages属性标志来实现这一点。

标记

代码语言:javascript
复制
<div ng-messages="myForm.sText.$error" role="alert" ng-messages-multiple>
    Error message:
    <div ng-message="required">
        Required text missing
    </div>
    <div ng-message="minlength, maxlength, pattern">
        Not right length or bad pattern - Why does this not work? I have also tried using comma , instead of ||(OR)
    </div>
    <div ng-message="minlength">
        Too short - this does work but does not change even if this is removed
    </div>
</div>

工作普朗克尔

票数 5
EN

Stack Overflow用户

发布于 2015-12-28 20:49:46

在角1.4中,可以为ng消息指定多个错误:

代码语言:javascript
复制
<div ng-message="minlength, maxlength">
  Your email must be between 5 and 100 characters long
</div>

请参阅文档

票数 3
EN

Stack Overflow用户

发布于 2015-04-16 10:47:41

为了使ng消息更通用,您可以将所有错误消息保存在一个地方,并在需要时使用它。您可以使用ng消息包括。

查看:重用和重写错误消息

http://www.yearofmoo.com/2014/05/how-to-use-ngmessages-in-angularjs.html#reusing-and-overriding-error-messages

我想你会想要实现这一点的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29672130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档