У меня есть 2 формы и 2 состояния в angularjs. Форма 1 (состояние 1) содержит такие входные данные, как: input, select ... И форма 2 (состояние 2) отображается при отправке form1. Все поля в форме 2 - это те же поля в форме 1, но их необходимо отключить. Я передал все поля из формы 1 в форму 2, используя $stateParams вот так vm.fields = $stateParams.fieldForm1; Итак, что я могу сделать, чтобы отключить все поля в форме 2

Форма 1: введите здесь описание изображения

И форма 2: введите здесь описание изображения

2
Insane Rose 3 Май 2016 в 12:11

2 ответа

Лучший ответ

В случае угловой формы есть опция под названием formState, которую вам нужно установить.

<body ng-app="formlyExample" ng-controller="MainCtrl as vm">
   <div>
      <formly-field options="vm.checkboxField" model="vm.options.formState"></formly-field>
   </div>
</body>

На уровне контроллера вам нужно будет установить formState следующим образом:

(function() {
'use strict';
  var app = angular.module('formlyExample', ['formly', 'formlyBootstrap']);

  app.controller('MainCtrl', function MainCtrl($scope, formlyVersion) {
  vm.env = {
      angularVersion: angular.version.full,
      formlyVersion: formlyVersion
    };
  var vm = this;

  vm.options = {
      formState: {
        disabled: true
      }
  }

});
})();

А чтобы обновить formState для всех полей, вы можете:

angular.forEach(vm.fields, function(field) {
      field.expressionProperties = field.expressionProperties || {};
      field.expressionProperties['templateOptions.disabled'] = 'formState.disabled';
});
1
Navoneel Talukdar 3 Май 2016 в 11:25

Верный ответ при использовании fieldGroup. В контроллере:

vm.options = {
          formState: {
            disabled: true
          }
        };
 angular.forEach(vm.fields, function(field) {
                if(field.fieldGroup == null) {
                  field.expressionProperties = field.expressionProperties || {};
                  field.expressionProperties['templateOptions.disabled'] = 'formState.disabled';
                }else {
                    var i = 0;
                    for(i=0; i< field.fieldGroup.length; i++){
                        field.fieldGroup[i].expressionProperties = field.fieldGroup[i].expressionProperties || {};
                        field.fieldGroup[i].expressionProperties['templateOptions.disabled'] = 'formState.disabled';

                    }
                }
            });
0
Insane Rose 3 Май 2016 в 16:29