Angular2では、<div>
ブロックを条件付きで表示したいとします。次の2つの方法の違いは何ですか。
<div [hidden]=isLoaded>Hello World!</div>
ここで、isLoaded
は、対応する.ts
ファイルのブール値です。
<div *ngIf=isLoaded>Hello World!</div>
<div>
がページに表示されていない場合でも、1。DOMに<div>
がありますが、2。にはありません。他に違いはありますか?それぞれの長所と短所は何ですか?
違いは、*ngIf
はDOMから要素を削除するのに対し、[hidden]
は実際にdisplay:none
を設定することでCSSスタイルで再生することです。ただし、[hidden]
の問題は、オーバーライドできるため、あなたの場合のようにdiv
が表示され、それが機能しない理由を頭に傷つけていることです。
まとめると、*ngIf
と[hidden]
はnotまったく同じです。前者はDOMから要素を削除し、後者はdisplay
CSSプロパティを切り替えます。