Как перенаправить URL без хэша на URL с хэшем в Angular? - PullRequest
2 голосов
/ 16 апреля 2019

Таким образом, пользователь получает URL-адрес, похожий на http://myapp.com/foo.

Поскольку маршрутизация приложений моего Angular работает "с хешем", соответствующий компонент доступен в http://myapp.com/#/foo.

И потому что у меня есть маршрут вроде:

{ path: '',   redirectTo: '/mainpage', pathMatch: 'full' }

http://myapp.com/foo обрабатывается им и перенаправляется на http://myapp.com/#/mainpage

Чего я хочу добиться, так это сделать перенаправление с http://myapp.com/foo на http://myapp.com/#/foo. И, конечно же, я хочу сохранить перенаправление на / # / mainpage, как сейчас.

Как мне это сделать в Angular 7? Если бы только параметр redirectTo мог взять функцию в качестве значения вместо строки, и позволить мне самостоятельно обрабатывать перенаправление, это было бы что-то. Но я боюсь, что это невозможно.

// Обновление

Я придумал использовать InitialRedirectGuard и пустой дочерний массив вместо redirectTo для path: '' объекта.

    path: '',
    children: [],
    canActivate: [InitialRedirectGuard],
    pathMatch: 'full',

Логика для перенаправления лежит в InitialRedirectGuard, где я использую window.location.pathname, чтобы увидеть URL, с которого я пришел. И тогда происходит router.navigate. Не круто, наверное, но похоже на работу.

...