Angular 2 typescript error when using subscribe function on new router (rc 1)

我的梦境 提交于 2019-11-27 07:53:14

问题


I am trying to set up authentication for my Angular 2 app with the new router. Someone suggested to try the following:

constructor (private _router: Router) {} 

ngOnInit(){
  this._router.subscribe(
    next => {
      if (!userIsLoggedInOrWhatever) {
        this._router.navigate(['Login']);
      }
    }
  )    
}

This problem however is that this results in the typescript error

(app.component.ts(47,22): error TS2339: Property 'subscribe' does not exist on type 'Router'.

This is strange because the documentation clearly shows that a Router object does have this function. I am able to call other functions like router.navigate(['/url']). Do you guys have an idea what could be the problem?


回答1:


new router

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

original

The Router class has an EventEmitter changes you can subscribe to:

ngOnInit(){
  this._router.changes.subscribe(
    next => {
      if (!userIsLoggedInOrWhatever) {
        this._router.navigate(['Login']);
      }
    }
  )    
}

For how to get the previous route see How to detect a route change in Angular 2? (pairwise())



来源:https://stackoverflow.com/questions/37137455/angular-2-typescript-error-when-using-subscribe-function-on-new-router-rc-1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!