Как определить перечисления в качестве параметров маршрута

Когда вы нажмете на сером поле слева от выхода ячейки, оно разворачивает вывод и покажет вам всю фигуру.

Чтобы изменить настройки навсегда, проверьте следующий вопрос: Отключить iPython Notebook Autoscrolling

0
задан Flyii 20 January 2019 в 09:41
поделиться

2 ответа

Итак, я сделал вторую попытку моего первого подхода, и мне удалось заставить его работать.

Я определил свои SegmentEnums

enum RouteSegment1 {
  value1,
  value2
}

enum RouteSegment2 {
  value1,
  value2
}

Создал охрану

export class EnumRouteGuard implements CanActivate {

  constructor(private router: Router) { }

  public canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
    const segment1: string = next.paramMap.get('routeSegment1')!;
    const segment2: string = next.paramMap.get('routeSegment2')!;

    const segment1IsEnum = Object.keys(RouteSegment1).find(key => RouteSegment1[key] === segment1);
    const segment2IsEnum = Object.keys(RouteSegment2).find(key => RouteSegment2[key] === segment2);

    if (!(segment1IsEnum && segment2IsEnum) ) {
      this.router.navigate([someOtherRoute]);
      return false;
    }
    return true;
  }
}

И использовал их в моих маршрутах

const routes: Routes = [
  {
    path: '', component: ParentComponent, children: [
      {
        path: ':routeSegment1',
        component: RouteSegment1Component,
         canActivate: [EnumRouteGuard],
      },
      {
        path: ':routeSegment1/:routeSegment2',
        component: RouteSegment2Component,
        canActivate: [EnumRouteGuard],
      },
    ],
  },
];
0
ответ дан Flyii 20 January 2019 в 09:41
поделиться

Не ясно, чего вы собираетесь достичь.

По крайней мере, Ваш код

{
   path: RouteSegment1.value1/RouteSegment2.value1,
   component: RouteSegment2Component,
},

должен быть записан как

{
    path: RouteSegment1.value1,
    component: RouteSegment1Component,
    children: [
      {
        path: RouteSegment2.value1,
        component: RouteSegment2Component
      }
    ]
  }
0
ответ дан 20 January 2019 в 09:41
поделиться
Другие вопросы по тегам:

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