5

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 Answer 1

7

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())

Sign up to request clarification or add additional context in comments.

4 Comments

could you please offer an example on how to accomplish this in the app.ts where the bootstrap(AppComponent, [ ... ] is also found? I am running into a number of different errors in my various attempts to get this working in my app.ts: "EXCEPTION: TypeError: Cannot read property 'changes' of undefined", "EXCEPTION: No provider for Router!", "angular2-polyfills.min.js:1 Unhandled Promise rejection: ReferenceError: router is not defined", "angular2-polyfills.min.js:1 Unhandled Promise rejection: TypeError: Cannot read property 'changes' of undefined"
What Angular2 version are you using? Above code works with RC.1 @angular/router but not with @angular/router-deprecated
nice work but how to detect the previous route, from where the app is coming to which route ?
The pairwise() operator should help here stackoverflow.com/questions/33520043/…

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.