2017-11-15 3 views
0

一部のユーザーのみが編集可能なフォームがあります。他のユーザーはそれを見ることができます。角度:フォームフィールドは読み取り専用モード

現在、フォーム内のフォームコントロールごとに、条件をチェックして、フォームコントロールまたはテキストのいずれかを表示しています。何かのように、

<div> 
    <input type="text" *ngIf="editable"> 
    <p *ngIf="!editable">{{value}}</p> 
</div> 

これはエレガントな方法ではないようです。トップレベルで何かをするような、よりクリーンな方法を提案してください。

+0

なぜあなたは、むしろ個別制御を切り替えるよりも、2つの異なるビュー(読み取り専用と編集可能)を作ることができませんか? – Zabavsky

答えて

0

ng-disabledの指示をご覧ください。 これはここでトリックを行う必要があります!

+0

あなたのリンクはAngular 1.xです。質問の出典はAngular 2+です。 – tasos

+0

私の悪いsrry。答えはここにあります:https://stackoverflow.com/questions/37159827/is-there-any-alternative-for-ng-disabled-in-angular2 – Marvin

1

角度を使用しているので、FormControlsFormGroupsを使用する方が良いです。 thisガイドをご覧ください。 FormControl APIを使用すると、enabledisable入力をプログラムで使用できます。

他の方法は、property bindingを使用して、このような何かを行うことです。

<div> 
    <input type="text" [readonly]="!editable"> 
</div> 
+0

いいえ、私は 'readonly'または' disabled '属性です。 'select'や' input'のようなフォームコントロールの代わりに静的な要素を表示したいのですが、各コントロールを個別に切り替える必要はありません。 – karthikaruna

+0

私はあなたが何を意味するのか分かりません。入力を静的な要素のようにスタイルするとどうなりますか? – tasos

+0

Angularは 'disabled'要素へのバインディングを推奨しません。フォームに 'select'要素があり、' readonly'がそれらに何の影響も与えないので、 'readonly'を使うことはできません。さらに、私は主に個々の要素を個別に切り替えることを望まない。 – karthikaruna

関連する問題