Запасной маршрут Angular2

Как я могу настроить маршрутизатор Angular2 для перенаправления меня на маршрут по умолчанию (или любой другой), если я перехожу на несуществующий маршрут?


person Vlado Tesanovic    schedule 04.01.2016    source источник


Ответы (3)


Я нашел это решение

{ component: HomeComponent, path: "", pathMatch: "full" },
{ component: LoginComponent, path: "/login" },
{ component: NotFoundComponent, path: "**" }
person Vlado Tesanovic    schedule 04.01.2016
comment
Спасибо за предоставленную информацию, я создал подпредставления с помощью @routerconfig() в дочерних компонентах и ​​смог перемещаться с помощью routerLink. Например, Parent: `#/sales` и Childs: #sales/asia & #sales/eu при переходе по ссылкам; дочерние представления отлично работают. Но я не смог загрузить #sales/asia изначально, я использовал параметр маршрутизатора по умолчанию, но он не работает. Как я могу загрузить #/sales/asia изначально при загрузке представления #sales? Заранее спасибо. - person Nithin CV; 11.04.2016

Информацию о перенаправлении маршрута по умолчанию (/) см. в Route документации по API< /а>. Просто установите для параметра useAsDefault маршрута по умолчанию значение true.

Например, если у вас есть маршрут, определенный как:

@RouteConfig([ {path: '/home', component: HomeCmp, name: 'Home', useAsDefault: true} ])

маршрут / будет перенаправлен на /home

Как упоминалось в OP в его ответе, чтобы перенаправить все неопределенные маршруты на определенный маршрут, используйте

@RouteConfig([ /*...,*/ {path: '/**', redirectTo: ['Home']} ])
person Ionut Costica    schedule 04.01.2016
comment
Да. Я постараюсь выложить рабочий пример plunkr, как только доберусь до компьютера. Если у вас возникли проблемы, возможно, сервер не настроен на маршрутизацию неизвестных маршрутов к вашему файлу index.html. Попробуйте использовать HashLocationStrategy или посмотрите, как настроить ваш сервер/сервер разработки для маршрутизации неизвестных маршрутов к вашему основному html-файлу. (хотя это должно появляться только тогда, когда вы указываете путь непосредственно в адресной строке или обновляете страницу). Попробуйте установить routerLink на неизвестный маршрут при использовании useAsDefault, и он должен перенаправить правильно. - person Ionut Costica; 04.01.2016
comment
Вы правы, useAsDefault работает только для перенаправления / на маршрут по умолчанию. Отредактировал мой ответ, чтобы отразить это - person Ionut Costica; 04.01.2016

Маршрутизатор изменен на новую версию, и теперь резервные маршруты используются таким образом. см. :маршрут Angular 2

{ path: '', redirectTo: '/member/dashboard', terminal: true },
{
  path: 'member',
  component: MemberMainComponent,
  canActivate: [AuthGuard],
  children: [
    {
      path: 'dashboard',
      component: DashboardComponent
    }
  ]
},
{ path: '**', component: DashboardComponent }
person Veerendra Borra    schedule 04.08.2016