带有Angular 1.5.x组件的ngMessages

时间:2016-03-23 15:14:53

标签: angularjs

我刚尝试将ngMessages引入我的应用程序,该应用程序使用1.5中添加的组件。只要我在模板中包含对ngMessage的任何引用,我就会收到此错误消息:

  

错误:$ compile:ctreq缺少必需的控制器。

     

这是ngMessages的常见错误,正常的补救措施是   建议在这里:   https://docs.angularjs.org/error/ $编译/ ctreq P0 = ngMessages&安培; P1 = ngMessage

但是,我使用的是组件,这是一种特殊类型的指令,这似乎不是组件的选项。

有没有人 ngMessages 在1.5中的组件中工作?

与指令一起使用的语法如下:

myApp.directive('myDirective', function() {
  return {
    require: 'ngModel',
    ...
  }
}

组件文档:https://docs.angularjs.org/guide/component并未涵盖require的等效文件。

2 个答案:

答案 0 :(得分:1)

这可能会对你有所帮助。

<form name="userLoginForm" autocomplete="off">
    <input type="text" minlength="10" maxlength="10" ng-pattern="/^[0-9]+$/" required ng-model="userData.mobileNumber" placeholder="Enter Mobile Number" class="form-control login-form-input" id="mobileNumber" name="mobileNumberInput"/> 
    <div ng-messages="userLoginForm.mobileNumberInput.$error" role="alert">
      <div ng-message="required">
          This field is required
      </div>
      <div  ng-message="pattern">
        Enter correct mobile number
      </div>
      <div ng-message="minlength, maxlength">
          Your mobile number must 10 characters long</div>
      </div>
   </div>

答案 1 :(得分:1)

当你没有正确的div结构时会发生这种情况。 第一个div必须包含ng-messages,一个内部应该是ng-message。 来自文档:

<ANY **ng-messages**="expression" role="alert">
    <ANY **ng-message**="stringValue">...</ANY>
</ANY>

在这种情况下,Angular的调试消息无益,导致更多混乱。