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?
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