Перенаправление маршрута Angular 2+ как функция - PullRequest
2 голосов
/ 26 апреля 2019

У меня есть следующая конфигурация маршрута в приложении Angular:

{
  path: ParentComponent.path,
  component: ParentComponent,
  canActivate: [AuthGuard],
  children: [
    {
      path: '',
      pathMatch: 'full',
      redirectTo: getDefaultChildRoute()
    },
    {
      path: ':mode/:year/:month/:day',
      component: ChildComponent
    }
  ]
}

Функция getDefaultChildRoute () возвращает строку, подобную этой:

export function getDefaultChildRoute(): string {
  const urlArray = ['a', '2019', '02'];
  return urlArray.join('/');
}

Проблема, похоже, в том, что redirectTo ожидает строку, но не метод для вызова (даже если он возвращает строку). Если я заменю этот вызов метода строкой-заполнителем, он будет работать нормально.

В github уже есть проблема: https://github.com/angular/angular/issues/13373

Использование функции стрелки непосредственно в redirectTo throws Ошибка Typescript '() => строка не может быть назначена типу string'.

Есть идеи?

1 Ответ

0 голосов
/ 26 апреля 2019

Попробуйте это:

redirectTo: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {
    const urlArray = ['a', '2019', '02'];
    return urlArray.join('/');
}
...