41

ngIfとの実質的な違いは何ngSwitchですか? どちらのディレクティブも DOM を操作しますが、ngSwitchより冗長です。ngIf本当に大きなものが必要な場合を除いて、単に使用するのが典型的なケースngSwitchですか?

ngSwitchngIfが直接置き換えられない状況はありますか? それとも、それらの唯一の実際的な違いは構文ですか?

4

4 に答える 4

40

ngIfは基本的に のバージョンでngSwitch、条件は 1 つです。ngShow単純に非表示にするのではなく、実際の DOM 要素を削除するという点で異なります。ngSwitch単一の真の条件チェックのみを使用している場合ngIfは、同じことを行うと思います。

于 2013-05-24T19:45:10.243 に答える
22

ngShowMichele Tilley は、特に/との対比を指摘する点で、まさに正しいngHideと思います。注意すべき追加の違いが 1 つあります。要素を in-place でng-Ifデタッチして再アタッチします。ただし、メイン ディレクティブとその条件を宣言する外側の要素があります: 。その外側の要素内の条件付きコンテンツは、外側の要素の最後の子として編集されるため、外側の要素内の条件のないコンテンツに対する相対的な位置が変更されます。ng-Switchng-switch="expression"append()

また、この CodePenで 3 つすべてのインタラクティブなデモを参照して、実行の違いを示してください。


編集: この動作は Angular 1.2 で変更されました。要素はそのまま残ります。上記の Codepen はこれについて言及し、実証しており、悲しいことに一掃された 1.08 Plunk へのリンクを提供しています...

于 2013-11-02T23:35:24.577 に答える
7

もう 1 つの違いは、ngIf と ngSwitch は新しいスコープを作成しますが、ngShow/ngHide は作成しないことです。

于 2015-04-02T23:29:57.423 に答える