путь дочернего маршрута должен включать родительский путь маршрута

Это моя конфигурация маршрута:

export const SchoolyearsRoutes: RouterConfig = [
  { path:'', terminal:true, redirectTo: '/schoolyears'},
  { path: 'schoolyears',  component: SchoolyearsListComponent },
  { path: 'schoolyears/edit/:id', component: SchoolyearsEditComponent },
  { path: 'schoolyears/create', component: SchoolyearsCreateComponent }

но я хочу, чтобы это было так:

export const SchoolyearsRoutes: RouterConfig = [
  { path:'', terminal:true, redirectTo: '/schoolyears'},
  { path: 'schoolyears',  component: SchoolyearsListComponent },
  { path: 'edit/:id', component: SchoolyearsEditComponent },
  { path: 'create', component: SchoolyearsCreateComponent }

Я хочу, чтобы этот маршрут редактирования/создания неявно добавлял базовый URL-адрес «schoolyears» во время выполнения.

Как я могу добиться этого без реструктуризации моих компонентов?

ОБНОВИТЬ

Хотя я использую TypeScript, я получаю исключение времени выполнения, которое должно произойти во время компиляции:

browser_adapter.ts:84EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot read property 'annotations' of undefined

person Elisabeth    schedule 27.06.2016    source источник


Ответы (1)


export const SchoolyearsRoutes: RouterConfig = [
  { path:'', terminal:true, redirectTo: '/schoolyears'},
  { path: 'schoolyears', component: SchoolyearsRootComponent, children: [
     { path: '',  component: SchoolyearsListComponent },
     { path: 'edit/:id', component: SchoolyearsEditComponent },
     { path: 'create', component: SchoolyearsCreateComponent }
  ] }
]

Разве это не то, что решает ваше дело?

person Wojciech Kwiatek    schedule 27.06.2016
comment
На самом деле да. Я думал, что что-то ./childpath будет работать, но дети - это новая функция router3 ... Я получаю исключение во время выполнения с вашим кодом - хотя он компилируется без проблем - я обновил свой вопрос с сообщением об ошибке, которое я получаю. Кажется, это проблема: stackoverflow.com/questions/38065325/ - person Elisabeth; 28.06.2016
comment
Я добавил SchoolyearsRootComponent к ответу. В пути schoolyears отсутствовал component. В вашем случае это, вероятно, будет включать только <router-outlet> - person Wojciech Kwiatek; 28.06.2016
comment
Я также узнал, что мне нужен еще один WrapperComponent. то я получаю исключение: не могу найти основную розетку. Я думал, что эти компоненты Wrapper/Home исчезли с router3. Таким образом, компоненту SchoolyearsRootComponent просто нужен шаблон: <router-outlet></router-outlet> это правильно? - person Elisabeth; 28.06.2016