Таким образом, пользователь получает 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. Не круто, наверное, но похоже на работу.