ngOnChanges仅在光标移动时检测更改

时间:2016-07-23 17:41:11

标签: angular

我对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;
}

1 个答案:

答案 0 :(得分:0)

如前所述,ngOnChanges不会仅仅因为改变了价值,你可以使用ngZone来解雇它。

注入NgZone并使用值集。

constructor(private zone: NgZone) {}

setBeat(time: number, beat: number) {
  this.zone.run(() => {
    this.sequencerSettings['beat'] = beat;
  });
}