2016-05-03 11 views
1

私はanglejsに2つの形式と2つの状態を持っています。フォーム1(状態1)には、input、select ...のような入力が含まれています。また、form1が送信されると、フォーム2(状態2)が表示されます。 form2のすべてのフィールドは、フォーム1の同じフィールドですが、無効にする必要があります。フォーム1からフォーム2までのすべてのフィールドに$stateParamsのようにvm.fields = $stateParams.fieldForm1を使って渡しました。だから私は無効にするには何ができるかのフォームにすべてのフィールド2すべての入力を角形で無効にしました

フォーム1:enter image description here

とフォーム2:formlyオプションがformStateが呼び出された角度の場合enter image description here

+0

入力を無効にするには、 'ng-disable =" condition "'を使用できます。 conditionはブール値を返すブール値または式です。たとえば、 'form。$ valid' – AlainIb

+0

私はそれが'角型 'に関連していることに気付かなかったので私の答えを削除しました。私は自分のコードをチェックし、私が似たようなことをして新しい答えとして投稿するかどうかを確認します。私は形式的には大好きですが、この文書はひどいものです。 –

答えて

1

あなたがする必要がありますセット。コントローラレベルで

<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を更新する:FIELDGROUPを使用した場合

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配列のforループを使用してそれを行います。 –

+1

私は助けてくれてありがとうございました。私はあなたの発見を別の答えとして投稿することをお勧めします。 –

0

真の答え。コントローラ内:

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

        } 
       } 
      }); 
関連する問題