2017-03-14 6 views
2

角度(2+)ルータには、rxjsサブジェクトであるeventsプロパティがあります。一度登録し角度ルータイベント名

は、次のようなイベントをリッスンすることができます:

router.events.subscribe((event: Event) => { console.log(event) });

が、問題は、それはすべてのイベントをリッスンするので、イベントの種類を取得する方法がありませんです。これを達成するためのより良い方法があった場合、私は興味があった

router.events.subscribe((event: Event) => { 
    if(event.constructor.name === 'NavigationStart') { 
    loadingService.start(); 
    } else if(event.constructor.name === 'NavigationEnd') { 
    loadingService.complete(); 
    drawerService.destroyAll(); 
    } 
}); 

:ハックソリューションは、あなたのようなイベントのコンストラクタの名前を調べることができますか?

答えて

1

Eventは基本クラスのみです。

具体的なイベント値は

することはでき例示用のRoutesRecognized

  • NavigationStart
  • NavigationEnd
  • NavigationCancel
  • NavigationError

    • の一つです
      constructor(router:Router) { 
          router.events 
          .filter(event => event instanceof NavigationStart) 
          .subscribe((event:NavigationStart) => { 
           // You only receive NavigationStart events 
          }); 
      

      もそんなにHow to detect a route change in Angular 2?

  • +1

    感謝を参照してください!これもドキュメントに戻ってPRしてください! https://github.com/angular/angular/pull/15142 – amcdnl

    +0

    寄稿のベストフォーム:) –