У меня есть 2 формы и 2 состояния в angularjs. Форма 1 (состояние 1) содержит такие входные данные, как: input, select ... И форма 2 (состояние 2) отображается при отправке form1. Все поля в форме 2 - это те же поля в форме 1, но их необходимо отключить. Я передал все поля из формы 1 в форму 2, используя $stateParams
вот так vm.fields = $stateParams.fieldForm1
; Итак, что я могу сделать, чтобы отключить все поля в форме 2
Форма 1: введите здесь описание изображения
И форма 2: введите здесь описание изображения
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';
});
Верный ответ при использовании 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';
}
}
});
Похожие вопросы
Новые вопросы
angularjs
Используйте для вопросов об AngularJS (1.x), JavaScript-фреймворке с открытым исходным кодом. НЕ используйте этот тег для Angular 2 или более поздних версий; вместо этого используйте тег [angular].