Стиль ng не применяется в случае динамически добавляемого html - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть форма, в которой поля добавляются динамически после нажатия кнопки.Это функция, которая добавляет поля формы

$scope.addFormField = function(){
    let container = document.getElementById('formFieldContainer');
    // a variable which keeps track of the number of fields added
    $scope.obj.fieldCount++;
    let formField = '<md-input-container><label>Mobile Number</label><input type="text" required name="mobileNo_' + $scope.obj.fieldCount + '" ng-model="obj.mobileNumberArr[' + $scope.obj.fieldCount +']" ng-pattern="/^[1-9]{1}[0-9]{9}$/" ng-style="form.mobileNo_' + $scope.obj.fieldCount + '.$valid ? {\'border-color\': \'green\',\'color\': \'green\'}:0"></md-input-container>';
    container.appendChild($compile(formField)($scope)[0]);
}

Если я напишу код поля формы непосредственно в html, стиль ng будет применен правильно.Но если я использую вышеупомянутую функцию для добавления полей формы, стиль ng не будет применен.

Есть ли что-то еще, что я должен добавить в свой код, чтобы заставить работать стиль ngдинамически добавленные поля.

1 Ответ

0 голосов
/ 19 сентября 2019

Вы можете установить ng-style содержимое в переменной и затем использовать его в formField :

$scope.addFormField = function(){
    let container = document.getElementById('formFieldContainer');

    // SET VARIABLE BASED ON CONDITION
    let newstyle = condition ? "{\'border-color\': \'green\',\'color\': \'green\'}" : 0;

    // a variable which keeps track of the number of fields added
    $scope.obj.fieldCount++;
    let formField = '<md-input-container><label>Mobile Number</label><input type="text" required name="mobileNo_' + $scope.obj.fieldCount + '" ng-model="obj.mobileNumberArr[' + $scope.obj.fieldCount +']" ng-pattern="/^[1-9]{1}[0-9]{9}$/" ng-style="' + newstyle + '"></md-input-container>';
    container.appendChild($compile(formField)($scope)[0]);
}

Проверить демонстрацию: DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...