Angle Router распознаватель - получить параметры от родителя при перезагрузке

У меня есть такой маршрут, с определителем для дочернего маршрута.

 {
        path: 'organizations/:oid',
        component: AdminOrganizationComponent,
        children: [
          {
            path: 'profile',
            component: AdminOrganizationProfileComponent,
            resolve: { organization: OrganizationResolver }
          },
          { path: '', redirectTo: 'profile', pathMatch: 'full' }
        ]
      },

Резольвер выглядит так

@Injectable()
export class OrganizationResolver implements Resolve<Observable<Organization>> {
  private activeOrganization: Organization;
  constructor(private route:ActivatedRoute) {}

  setUser(organization: Organization) {
    this.activeOrganization = organization;
  }

  resolve() {
    return of(this.activeOrganization);
  }
}

Прежде чем перейти к маршруту, я использую сервис для настройки выбранной организации.

  edit(organization) {
    this.organizationResolver.setUser(organization);
    this.router.navigate(['/admin/organizations', organization.id]);
  }

Пока это работает так, как задумано, я могу использовать snapshot.data получить выбранную организацию.

Теперь, когда я перезагрузить маршрут

/ Организации /12345/ Профиль

Я хочу, чтобы решатель проверил, есть ли activeOrganization сохраняются. Если нет, то предполагается получить его через http.get с 12345 как id,

Моя проблема в том, что я не знаю, с помощью какого инструмента я могу получить параметры. Обычно в компоненте я могу просто использовать activatedRoute.parent.paramsНо в этом случае вводится activatedRoute.parent является null,

Я понял, что так как я предоставил решатель в корне, parent=null будет иметь смысл, но выходя из снимка я получаю null в родительском, а также firstChild...

1 ответ

Решение

ActivatedRouteSnapshot Содержит информацию о маршруте, связанном с компонентом, загруженным в розетку в определенный момент времени. ActivatedRouteSnapshot также можно использовать для обхода дерева состояний маршрутизатора.

import { Resolve, ActivatedRouteSnapshot } from '@angular/router';

  resolve(route: ActivatedRouteSnapshot) {
    let id: any = route.params['id'];
  }
Другие вопросы по тегам