禁用 angular-formly 中的所有输入

Disabled all input in angular-formly

我在 angularjs 中有 2 种形式和 2 种状态。表单 1(状态 1)包含输入,如:input,select... 表单 2(状态 2)在提交表单 1 时显示。 form2 中的所有字段与 form 1 中的字段相同,但必须禁用它们。我通过使用 $stateParamslike that vm.fields = $stateParams.fieldForm1; 将所有字段从表格 1 传递到表格 2;那么我该怎么做才能禁用表单 2

中的所有字段

表格 1:enter image description here

和表格 2:enter image description here

在 angular 的情况下,您需要设置一个名为 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';
});

使用 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';

                    }
                }
            });