2017-12-16 22 views
0

角度ルータのreuseStrategyについて興味深い質問があります。Angularのルータを使用してReuseStrategyを使用してコンポーネントがレンダリングされるかどうかを知る方法

ルータを使用してこのコンポーネントに戻った場合、「キャッシュされた」コンポーネントになっていると想像してください。作成することなく、ngOnInitなどのものがあります。 これはクールだし、うまくいきます。

問題は - このコンポーネントはテンプレートに<video autoplay>タグを持っています。すべてうまくいっていますが、ルータ戦略からのキャッシュを使用してコンポーネントが「再レンダリング」されると、そのコンポーネントがフリーズされるという問題があります。 再生を開始するには、このビデオをクリックする必要があります。

私はキャッシュされた/ルータ戦略の方法でロードされたコンポーネントで通知するために使用できるイベントの種類はありますか?はい、私はこれをシンプル行うことができ 場合:

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

あなたが任意のアイデアがありますか?

答えて

1

ルーターにはフックできるNavigationEnd eventがあります。

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