我对Angular2指令有一个输入,该指令包含一个间隔更新的变量。
我发现的问题是,如果光标没有被主动移动,它会停止检测变化,只有当鼠标恢复移动时才会再次恢复检测。我必须想象有一种方法可以在没有光标交互的情况下更改@Input时触发函数吗?
指令
@Input('current-beat') currentBeat: number;
ngOnChanges() {
this.update();
console.log('changed detected', this.currentBeat);
}
HTML标记标记
<div my-instrument-beat-changer [current-beat]="sequencerSettings['beat']">
更新currentBeat的服务中的功能
// function called when a web worker set on an interval
// posts a message to the service
setBeat(time: number, beat: number) {
this.sequencerSettings['beat'] = beat;
}
答案 0 :(得分:0)
如前所述,ngOnChanges不会仅仅因为改变了价值,你可以使用ngZone来解雇它。
注入NgZone
并使用值集。
constructor(private zone: NgZone) {}
setBeat(time: number, beat: number) {
this.zone.run(() => {
this.sequencerSettings['beat'] = beat;
});
}