Задать вопрос
@iluxa1810

Почему метод вызывается раньше окончания resolve и так много раз?

Есть такой 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 я вызываю методы проверки доступности.

Лазил по всему коду и использую его я этот метод только в этом одном месте...
  • Вопрос задан
  • 47 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы