因此用户收到一个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 Im的来源。然后发生router.navigate。我猜不太酷,但似乎可以正常工作。