私はngIfでいくつかのdivを持っています、特定のdivがフォーカスのようなイベントトリガー(それが機能しない)または何かのように、現在表示されている/アクティブであるかどうかを知る方法を持っているだけで、このイベントでは、変数などを設定します。
<div *ngIf="test === true" (focus)="myVariable = true">
</div>
ラキットの答えを基にしたいと思います。
<div *ngIf="test"><ng-container *ngIf="runShow && show()"></ng-container></div>
そしてコンポーネント内
_this.runShow = true;
//show always returns true.
show() {
//Return if not running. Shouldn't be needed as runShow proceeds show in the template.
if(!this.runShow) {
return true;
}
//Do modifications...
this.runShow = false;
return true;
_
show()
は、テストが真実である場合にのみ実行され、1回の反復後に自動的にオフになります(もちろん、_this.runShow
_を何かに基づいて変更できます)。重要な落とし穴は、_this.runShow == false
_まで、コンポーネントが変更を検出するたびに実行されることです。 show()を独自のng-container内に配置して、DOMに影響を与えず、テストがレンダリングされた後に実行されるようにします。
これは回避策の可能性があります。それは最良のものではないかもしれませんが、動作します。
Htmlファイルでは、
<div *ngIf="show()"> </div>
コンポーネントTSファイルでは、
show(){
if(test){ //condition for showing the div
myVariable = true;
return true;
}
else
return false;
}