Не удается правильно получить доступ к свойству данных ActivatedRouteSnapshot в корневом компоненте - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть маршрут UserComponent (который загружается как «родительский» маршрут: path: ''), который содержит только директиву <router-outlet>.Оттуда я хочу либо перейти к StartPageComponent (дочерний корень: path: ''), если для свойства sartPage установлено значение true, либо к IdeasComponent (дочерний корень: path: 'list'), если это недело.Свойство startPage содержится в объекте instanceData, который передается «родительскому» маршруту в качестве разрешенных данных.Хотя я делаю следующее: я проверяю свойство startPage в StartPageGuard (которое реализует интерфейс CanDeactivateChild) и пытаюсь получить доступ к route.data['instanceData'].startPage (маршрут имеет тип ActivatedRouteSnapshot).И я не могу получить к нему доступ, даже если я вижу объект InstanceData в консоли при распечатке самого route.Однако при распечатке route.data я получаю только пустой объект.Поэтому было бы хорошо, если бы кто-то мог объяснить мне, что там происходит и, возможно, как я могу предотвратить переход к корневому маршруту на основе значения свойства startPage.Вот мой код: StartPageGuard:

import { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot, Router, ActivatedRoute } from '@angular/router';
import { Injectable } from '@angular/core';

@Injectable()
export class StartPageGuard implements CanActivateChild {
  constructor(private router: Router, private activeRoute: ActivatedRoute) {}

  canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    const showStartPage = route.data['instanceData'].startPage;
    if (showStartPage) {
      return true;
    } else {
      this.router.navigate(['/list'], {relativeTo: this.activeRoute});
    }
  }
}

Переменная routes: Routes из appRoutingModule:

{
    path: '',
    component: UserComponent,
    canActivateChild: [StartPageGuard],
    resolve: {
        instanceData: InstanceResolve
    },
    children: [
      {
        path: '',
        component: StartPageComponent,
      },
      {
        path: 'list',
        component: IdeasComponent,

      }

А UserComponent содержит только router-outletдирективы.

...