我得到了一個角2項目中,一個帆布類(打造打字稿,但實際角2應用程序之外)觸發每當在畫布上當前的動畫結束的事件。這是由以下的基本事件偵聽器/調度程序結構進行:角2:ngIf問題
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 e動畫完成時應該更新視圖是兄弟組件,處理這兩者的通信有canvasHelperService
。
在聆聽組件有一個ngIf結構來切換根據動畫的當前狀態的一個按鈕的外觀(停止,成品,暫停正在運行)。如果這些都重置爲false
初始狀態應該恢復
<span *ngIf="!isPlaying" (click)="play()">PLAY ICON</span>
<span *ngIf="isPlaying" (click)="pause()">PAUSE ICON</span>
:這是通過在simmilar方式布爾變量isPaused
和isPlaying
處理了這一點。這一切實際上工作得很好。但是,只有當我將鼠標懸停在畫布上時,它纔會重置按鈕以顯示播放圖標,並且我找不到發生這種情況的原因。
我怎麼能強迫ngIf立即作出反應,當前動畫狀態沒有我在畫布(組件調度事件的一部分)懸停?
這工作得很好,謝謝。 –