Перенаправление несовпадающих маршрутов в Angular 2

Я ищу эквивалент $urlRouterProvider.otherwise в Angular 2.

Подробнее:

У меня есть такое определение маршрутизатора:

@RouteConfig([
  { path: "/", component: MultiPost, name: "Home", useAsDefault: true },
  { path: "/m/:collectionName/:categoryName/:page", component: MultiPost, name: "MultiPost" }
])

Оба маршрута работают отлично, например, когда я нажимаю / или /m/sth/sth/0, я получаю то, что хочу.

Но когда я нажимаю случайный URL-адрес, например /kdfsgdshdjf, ничего не происходит. Страница отображается, а <router-outlet> пусто, так как маршрут не соответствует.

Что я хочу сделать, так это перенаправить все несоответствующие маршруты на маршрут по умолчанию. Мне нужно что-то вроде $urlRouterProvider.otherwise("/");.

Кто-нибудь знает, как это сделать?


person Umut Benzer    schedule 20.01.2016    source источник


Ответы (2)


Эта функция еще не реализована:

https://github.com/angular/angular/issues/2965

person Langley    schedule 20.01.2016
comment
Плохие новости для меня, но спасибо, что сообщили мне. - person Umut Benzer; 20.01.2016
comment
Да, я тоже с нетерпением жду этого, но вы все еще можете перенаправить с помощью внутреннего сервера. - person Langley; 20.01.2016
comment
Теперь он реализован и может использоваться следующим образом: const appRoutes: Routes = [ { path: '**', component: PageNotFoundComponent } ]; - person Stefan Rein; 26.01.2017

В угловом 2 еще нет маршрута «иначе». Но та же функциональность может быть достигнута с помощью подстановочного параметра, например:

@RouteConfig([
    { path: '/', redirectTo: ['Home'] },
    { path: '/home', name: 'Home', component: HomeComponent },
    // all other routes and finally at the last add
    {path: '/*path', component: NotFound}

Это загрузит только компонент «NotFound», а URL-адрес будет таким же, как и тот, к которому вы переходите. Если вы хотите, чтобы все не совпадающие маршруты перенаправлялись на URL-адрес «404», вы можете сделать что-то вроде:

//at the end of the route definitions
{ path: '/404', name: '404', component: PageNotFoundComponent },
{ path: '/*path', redirectTo:['404'] }
person Saurabh Maurya    schedule 25.01.2016
comment
Ответ @Langley был правильным, хотя это следует принять, поскольку это также дает решение. - person Vassilis Pits; 28.04.2016