カンバスの現在のアニメーションが終了するたびにキャンバスクラス(typescriptでビルドされ、実際の角度2のアプリケーションの外にある)がイベントをトリガする角度2のプロジェクトがあります。これは、以下の基本的なイベントリスナー/ディスパッチャ構造により行われる:angular2:ngIf problems
canvas.tsイベントリスナは、一の成分に登録されて
eventListener = [];
public addListener(name : string, cb : Function) {
this.eventListener.push({name: name, cb : cb});
}
public dispatchEvent(name : String, event) {
var scope = this;
$.each(scope.eventListener, function(key, value){
if(value.name == name) {
value.cb(event);
}
});
}
:
成分、すなわち、listens.ts
ngOnInit() {
this.canvasHelper.addEventListener('animationFinished',() => this.handleAnimationEnd());
}
private handleAnimationEnd() {
this.isPlaying = false;
this.isPaused = false;
}
コンポーネントがキャンバス内にあり、thアニメーションが完了したときにビューを更新する必要があります。兄弟コンポーネントである場合、これらの2つの通信を処理するcanvasHelperService
があります。
リスニングコンポーネントには、アニメーションの現在のステータス(停止、終了、一時停止、実行中)に応じてボタンの外観を切り替えるngIf構造があります。これは、これまでsimmilar方法のboolean変数isPaused
とisPlaying
によって処理されます:
<span *ngIf="!isPlaying" (click)="play()">PLAY ICON</span>
<span *ngIf="isPlaying" (click)="pause()">PAUSE ICON</span>
これらは初期状態が復元される必要がありfalse
の両方にリセットされた場合。これは実際にはすべて正常に動作します。ただし、キャンバス上にマウスを置くとすぐに再生アイコンが表示されるようにボタンをリセットするだけで、これが起こる理由はわかりません。
ngIfにキャンバス(イベントを送出しているコンポーネントの一部)の上にカーソルを置かなくても、現在のアニメーション状態に即座に反応させるにはどうすればよいですか?
これはうまくいきました。ありがとうございます。 –