Javascript 基于多个条件显示带有ng消息的验证消息

Javascript 基于多个条件显示带有ng消息的验证消息,javascript,angularjs,validation,ng-messages,Javascript,Angularjs,Validation,Ng Messages,我使用angular ng消息来显示验证消息 考虑以下代码: <ul ng-messages="formToValidate.fieldToValidate.$error" ng-messages-multiple> <li ng-message="pattern">Invalid pattern</li> <li ng-message="minlength, maxlength">Should contain no less th

我使用angular ng消息来显示验证消息

考虑以下代码:

<ul ng-messages="formToValidate.fieldToValidate.$error" ng-messages-multiple>
    <li ng-message="pattern">Invalid pattern</li>
    <li ng-message="minlength, maxlength">Should contain no less than 7 and no more than 100 chars</li>
    <li ng-message="!pattern && !minlength && !maxlength && onlyAfterAllOtherPassedValidation">
        This validation message is shown only when all the other validations have passed and validation  fails on onlyAfterAllOtherPassedValidation
    </li>
</ul>
  • 无效的模式
  • 应包含不少于7个且不超过100个字符
  • 仅当所有其他验证都已通过且仅在AllotherPassedValidation之后验证失败时,才会显示此验证消息
我只想在所有其他验证都已通过且仅在AllotherPassedValidation之后验证失败时显示最后一条验证消息。 我不知道是否有可能将复杂的条件传递给ng消息
只要我仍然可以使用ng消息,任何建议以及解决方法都是受欢迎的。

您可以在保存消息的元素上使用ng if,例如

<li ng-if="!formToValidate.fieldToValidate.$error.required && !formToValidate.fieldToValidate.$error.minLength && !formToValidate.fieldToValidate.$error.maxLength" ng-message="onlyAfterAllOtherPassedValidation">
    This validation message is shown only when all the other validations have passed and validation  fails on onlyAfterAllOtherPassedValidation
</li>
  • 仅当所有其他验证都已通过且仅在AllotherPassedValidation之后验证失败时,才会显示此验证消息

  • 琼玛1374提出的解决方案当然有效。但最好一劳永逸地解决这个问题。我建议你注意这个指示。这有助于建立自己的检查

    现场示范

    
    密码
    {{ExampleForm.password.$error | json}}
    你的要求是错误的
    你的模式是错误的
    你的长度错了
    只有在AllocherPassedValidation之后,您的
    
    对我有用,我根本没想过!谢谢
    <form name="ExampleForm">
      <label>Password</label>
      <input ng-model="password" name="password" minlength="2" pattern="^\d*$" required use-form-error="onlyAfterAllOtherPassedValidation" use-error-expression="!ExampleForm.password.$error.required && !ExampleForm.password.$error.minlength && !ExampleForm.password.$error.pattern"
      />
      <pre>{{ExampleForm.password.$error|json}}</pre>
      <div ng-messages="ExampleForm.password.$error" ng-messages-multiple="true" class="errors">
        <div ng-message="required">
          Your required is wrong
        </div>
        <div ng-message="pattern">
          Your pattern is wrong
        </div>
        <div ng-message="minlength">
          Your minlength is wrong
        </div>
        <div ng-message="onlyAfterAllOtherPassedValidation">
          Your onlyAfterAllOtherPassedValidation
        </div>
      </div>
    </form>