2016-05-03 3 views
1

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

Форма 1: enter image description here

И форма 2: enter image description here

+0

вы можете использовать 'ng-disable =" condition "' для отключения ввода. condition является логическим или выражением, которое возвращает логическое значение, например: 'form. $ valid' – AlainIb

+0

Я удалил свой ответ, потому что не заметил, что это было« угловато-формально ». Я проверю свой код и посмотрю, сделал ли я что-то подобное и отправлю его как новый ответ. Я очень люблю, но документация об этом ужасна. –

ответ

1

В случае угловой мерно есть опция под названием 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'; 
}); 
+0

спасибо ^^. Он работает с одним полем. Как это работает с fieldGroup? http://angular-formly.com/#/example/integrations/angular-material –

+0

Я делаю это, используя для цикла с массивом field.fieldGroup. Большое вам спасибо за то, что помогли мне –

+1

, приятно слышать это. Я предлагаю вам опубликовать ваши результаты в качестве другого ответа. –

0

Истинный ответ при использовании 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'; 

        } 
       } 
      }); 
Смежные вопросы