rxjs可见性更改事件未在Angular 4中触发

时间:2018-07-17 20:22:03

标签: angular rxjs

我需要知道用户何时更改回包含我的页面的选项卡。我尝试了visibllity api,但是在切换标签页时,我的订阅未触发。我订阅了很多事件,除了切换选项卡时,其他所有事件都会触发。

代码如下:

private subscribeToActionEvents() {

this._zone.runOutsideAngular(() => {
  const actionEventNames = ['mousemove', 'scroll', 'keyup',
        'hidden', 'webkitHidden', 'visibilitychange', 'webkitvisibilitychange', 'msvisibilitychange'];

  const events = actionEventNames.map((eventName) => {
    let el = this._element.nativeElement;
    return Observable.fromEvent(jQuery(el).closest('body'), eventName);
  });

  const allActionEvents$ = Observable.merge(...events);

  this._subscriptions$.push(allActionEvents$.subscribe((event) => {
      this._registerUserActivity();
    })
  );
});

}

我什至尝试附加到'html'而不是'body'标签,没有区别。 我想念什么吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您需要将侦听器添加到文档中,以使可见性更改生效。 简单的例子,检查控制台输出:https://stackblitz.com/edit/angular-wkjqrw