Getting Error after implementing AuthGuard

158 views
Skip to first unread message

Partha Majumdar

unread,
Oct 10, 2018, 6:20:24 AM10/10/18
to Angular and AngularJS discussion

Dear Sir/Madam,


I implemented the AuthGuard. However, I get the following error when it tries to load any Page.


Please help.


Regards,

Partha


The error is as follows:


ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'canActivate' of undefined

TypeError: Cannot read property 'canActivate' of undefined

    at AuthGuard.push../src/app/general/auth-guard.ts.AuthGuard.canActivate (auth-guard.ts:17)

    at MapSubscriber.project (router.js:2795)

    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/map.js.MapSubscriber._next (map.js:35)

    at MapSubscriber.push../node_modules/rxjs/_esm5/internal/Subscriber.js.Subscriber.next (Subscriber.js:54)

    at Observable._subscribe (subscribeToArray.js:5)

    at Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable._trySubscribe (Observable.js:42)

    at Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable.subscribe (Observable.js:28)

    at MapOperator.push../node_modules/rxjs/_esm5/internal/operators/map.js.MapOperator.call (map.js:18)

    at Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable.subscribe (Observable.js:23)

    at MergeMapOperator.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapOperator.call (mergeMap.js:28)

    at AuthGuard.push../src/app/general/auth-guard.ts.AuthGuard.canActivate (auth-guard.ts:17)

    at MapSubscriber.project (router.js:2795)

    at 



app-routing.module.ts


const routes: Routes = [
{ path: '', component: AppLoginComponent},

{ path: 'uploadType', component: AppUploadTypeComponent, canActivate: [AuthGuard]},
{ path: 'uploadType/create', component: AppUploadTypeAddComponent, canActivate: [AuthGuard]},
{ path: 'uploadType/edit/:uploadTypeCode', component: AppUploadTypeAddComponent, canActivate: [AuthGuard]},
];

@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
providers: [AuthGuard]
})
export class AppRoutingModule {}



auth-guards.ts


import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { Injectable } from '@angular/core';

import { GeneralService } from './general.services';

@Injectable()
export class AuthGuard implements CanActivate {

constructor(
private generalService: GeneralService,
private router: Router
) {}

canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean>|Promise<boolean>|boolean {
const isAuthorised = this.generalService.getIsUserAuthenticated();

if (!isAuthorised) {
this.router.navigate(['/']);
}
return isAuthorised;
}

}

Reply all
Reply to author
Forward
0 new messages