Есть такой resolve:
export class PermissionResolver implements Resolve<any> {
constructor(private authService: AuthorizationService, private permissionService: PermissionService) { }
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<any> | Promise<any> | any {
return this.authService.authorize().pipe(tap(() => {
this.permissionService.currentUser = this.authService.currentUser;
}));
}
}
Подцеплен к маршруту так:
const appRoutes: Routes = [
{
path: '', component: HomeComponent, pathMatch: 'full', resolve: { data: PermissionResolver }
}
];
Так вот меня беспокоит следующее:
1) Когда точка останова оставливается тут this.permissionService.currentUser=this.authService.currentUser, то консоль уже пестрит ошибками об undefined, так как currentUser используется в биндинге и меню сайта так же отображается.
Если верить документации, то страница не должна грузится пока не отработает resolve.
2)Этот сервис биндится в компоненте:
<li class="nav-item"><a class="nav-link" [ngClass]="{'disabled':!permissionService.canView()}"
, как я уже говорил, консоль пестрит ошибками. А когда ошибки проходят, то в консоли отображается 10-ок сообщений об успешном вызове метода(я логирую этот метод).
HomeComponent представляет из себя:
<body>
<nav-menu></nav-menu>
<router-outlet></router-outlet>
</body>
Именно в nav-menu я вызываю методы проверки доступности.
Лазил по всему коду и использую его я этот метод только в этом одном месте...