網站搜尋

typescript - 如何使用新的 NavigationStart @angular-router 3.0.0-alpha.*


我看到了這些在新的 Angular 2 路由器中的新事件。

有 NavigationStart、NavigationEnd、NavigationFailed(或類似的東西)

有人知道如何使用這些嗎?我嘗試過一些東西,但還沒能讓它們做任何事情。

答案#1

Router 提供了一個可以訂閱的 events 可觀察對象

constructor(router:Router) {
  router.events.subscribe(event => {
    if(event instanceof NavigationStart) {
    }
    // NavigationEnd
    // NavigationCancel
    // NavigationError
    // RoutesRecognized
  }
});

另見

  • https://angular.io/docs/ts/latest/api/router/index/Router-interface.html
  • https://angular.io/docs/ts/latest/api/router/index/NavigationStart-class.html
  • https://angular.io/docs/ts/latest/api/router/index/NavigationEnd-class.html
  • https://angular.io/docs/ts/latest/api/router/index/NavigationCancel-class.html
  • https://angular.io/docs/ts/latest/api/router/index/NavigationError-class.html
  • https://angular.io/docs/ts/latest/api/router/index/RoutesRecognized-class.html

注意

不要忘記從 router 模組中匯入 NavigationStart

import { Router, NavigationStart } from '@angular/router';

因為如果你不匯入它,instanceof 將無法運作,並且會出現錯誤 NavigationStart 未定義。

答案#2

就像這樣

 constructor(
  private router:Router
 ){}
 this.router.events
  .filter(event=> event instanceof NavigationStart)
  .subscribe((event:NavigationStart)=>{
     // TODO
  });