Я занимаюсь разработкой приложения с angular6, маршруты моего приложения состоят из множества дополнительных маршрутов, и я заметил, что мое приложение несколько раз вызывает функцию проверки подлинности маршрутизатора, что приводит к замедлению работы моего приложения при переходе от одной страницы к другой.
мой код на данный момент: маршрутизатор
const mainRoutes: Routes = [
{
path:"",
component:MainComponent,
canActivate:[AuthGuard],
canActivateChild:[AuthGuard],
children:[
{path:'',loadChildren:"./calendar/calendar.module#CalendarModule"},
{path:'patients',loadChildren:"./patients/patients.module#PatientsModule"},
]
},
];
каждый модуль содержит другие модули, которые также имеют маршрутизатор.
auth.guard.ts:
canActivate(): Observable<boolean> {
return this.checkLogin();
}
canActivateChild(): Observable<boolean> {
return this.checkLogin();
}
canLoad(route: Route): Observable<boolean>|Promise<boolean>|boolean {
return this.checkLogin();
}
//authguard can provide an observable rather than a straight boolean
checkLogin(): Observable<boolean> {
return this.authService.checkAuth().map(e => {
if (e == false) {
this.router.navigate(['auth'], );
return false;
}
return true;
}).catch(() => {
console.log("Could not login");
this.router.navigate(['auth'], );
return Observable.of(false);
});
}
checkAuth:
checkAuth(): Observable<boolean> {
return this.http.get(HttpService.serverApiUrl+"security/check-auth")
.map(response => {
if(response['auth'] == 1) {
return true;
} else {
this.router.navigate(['/auth'])
return false;
}
});
}