如何知道组件是否使用 Angular 的路由器使用 ReuseStrategy 呈现

How to get know if component is rendered using ReuseStrategy using Angular's router

我对 angular 路由器中的 reuseStrategy 有一个有趣的问题。

所以想象一下我有一个我想成为的组件 "cached" 所以如果我使用路由器回到这个组件它是,没有创建,ngOnInit 和其他东西。 太棒了,而且工作正常。

问题是 - 此组件在模板中有 <video autoplay> 标记。一切正常,但是当组件 "rerendered" 使用来自路由器策略的缓存时,会出现冻结的问题。 我必须点击这个视频才能开始播放。

所以问题是,是否可以使用任何类型的事件在组件中通知我是从 cached/router-strategy 方式加载的? 如果是,我可以简单地这样做:

event.subscribe(()=>this.videoElement.nativeElement.play());

你有什么想法吗?

路由器有一个 NavigationEnd event 可以连接到。

class Cmp {
  constructor(private router: Router) {
    router.events
      .filter(e => e instanceof NavigationEnd)
      .subscribe(() => {
        this.videoEl.nativeElement.play()
      });
  }
}