Angularjs | NG-сообщение не показывает сообщение об ошибке при загрузке HTML из директивы с помощью $ compile

0

Я создаю динамику из ng-repeat из json.

my form.html

    <form    name="userForm" >
     <div ng-repeat="(key,box) in form.form_fields" >
    <accordion >
            <accordion-group heading="{{key}}"  is-open="true">
                <div ng-repeat="field in box">
                       <field-directive field="field">
                        </field-directive> 
               </div>       
            </accordion-group>
  </accordion>
            </div> 
    </form>

поэтому в основном я загружаю каждый тип поля (текстовое поле/радио/выпадающее меню/электронная почта и т.д.) html crough loop через директиву. Я загружаю этот маленький HTML, используя $ compile и linker. Все работает хорошо даже валидацией. Я могу включить/отключить кнопку отправки на основе проверки формы, кроме ng-message. если я не использую такую директиву

    <form name="userForm" >

 <div ng-repeat="(key,box) in form.form_fields" >
    <accordion >
            <accordion-group heading="{{key}}"  is-open="true">
                <div ng-repeat="field in box">

                        <div class="col-md-3 col-sm-6 col-xs-12" ng-if="field.field_type ==='textfield' ">
                                <md-input-container >
                                          <label>{{field.field_title}}</label>
                                          <input ng-model="field.field_value" name="{{field.field_id}}" type="text" 
                                            ng-required="true" md-maxlength="9" >


                                     <div ng-messages="userForm.{{field.field_id}}.$error">

                                        <p ng-message="maxlength">Your name is too long.</p>
                                        <p ng-message="required">Your name is required.</p>
                                    </div>
                                 </md-input-container>   
                        </div>   

                        <div class="col-md-3 col-sm-6 col-xs-12" ng-if="field.field_type ==='number' ">
                                <md-input-container >
                                          <label>{{field.field_title}}</label>
                                          <input ng-model="field.field_value" name="{{field.field_id}}" type="text" 
                                            ng-required="true" md-maxlength="9" >


                                     <div ng-messages="userForm.{{field.field_id}}.$error">

                                        <p ng-message="maxlength">Your name is too long.</p>
                                        <p ng-message="required">Your name is required.</p>
                                    </div>
                                 </md-input-container>
                        </div>



               </div>       
            </accordion-group>
  </accordion>
            </div> 
    </form>

все работает нормально, в том числе ng-message. Я также вижу сообщение об ошибке. В чем проблема с ng-message, если я использую директиву. Пожалуйста помоги.

Теги:
angularjs-directive
ng-messages

1 ответ

0

Вероятно, поздний ответ, но вы можете сделать

var element1 = angular.element(your_html_fragment);... logic to append element1 in somewhere

после этого

$compile(element1)(scope) в вашей директиве, это должно это сделать.

angular.element последовательность angular.element и $compile.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню