我正在尝试使用新路由器为我的Angular 2应用设置身份验证。有人建议尝试以下方法:

constructor (private _router: Router) {}

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

但是,此问题是导致 typescript 错误



这很奇怪,因为documentation清楚地表明Router对象确实具有此功能。我可以调用其他功能,例如router.navigate(['/url'])。你们有什么想法吗?

最佳答案

新路由器

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

原始
Router类具有您可以订阅的EventEmitter changes:
ngOnInit(){
  this._router.changes.subscribe(
    next => {
      if (!userIsLoggedInOrWhatever) {
        this._router.navigate(['Login']);
      }
    }
  )
}

有关如何获得上一条路线的信息,请参见How to detect a route change in Angular 2?(pairwise())

关于javascript - 在新路由器(RC 1)上使用订阅功能时出现Angular 2 typescript 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37137455/

10-12 22:37