2017-11-04 8 views
1

私のフォームには多くのコントロールがあります。私はコントロールのいくつかのルールを評価します。特定のコントロールのvisiblityExpressionがfalseに評価されると、コントロールが表示されないようにしたいと思います。Angular-Material2コントロールの視認性を変更するにはどうすればよいですか?

this.formControl戸籍AbstractControl。 ユーザーに表示されないようにするにはどのような方法がありますか?

私はそのようなSTHをやってみたかった

if(result === false) this.formControl.hide();

答えて

1

私は[隠さ]ブール変数isVisibleを使用して、フォームの上部にあるディレクティブはトリックやるべきだと思う:テキストボックスを非表示にして

[hidden]="formControl.isVisible" 

Plunker例。同じことを全体の制御に適用することができる。個人的には、DOMからコントロールを削除する方が良いと思います。* ngIfを非表示にするだけです。

+0

htmlテンプレートとその他のコンポーネントファイルの外部からディレクティブを追加できますか?私は、コントロールへの参照を持つだけでそれを隠すことができるようにしたい。インスタンスの場合、this.formControl.disable()はコントロールを無効にします。私の例は、私がここにそれを提示するよりもはるかにcompendです....理由があります。 – Yoda

+0

残念ながら、これはそれほど単純ではありませんが...あなたのコンポーネントの通信サービスを作成しようとすることができます。フォームタグの上にブール変数で[hidden]を配置し、サービス呼び出し関数からフォームコントロールを持つcommponentのdisable()関数を呼び出します。呼び出し後に関数を無効にすると、変数true/falseが変更され、同じ方法でフォームが非表示になります。 Observableを使用してサービスメソッドを登録し、フォームコントロールを使用してコンポーネントのステータス変更をリスンすることができます。 – krzysztofla

関連する問題