【发布时间】:2019-09-11 00:19:26
【问题描述】:
我有一个看起来很简单的问题,但是我已经搜索了很多解决方案但找不到它,尤其是自从 Angular2 以来很多事情都发生了变化。
我有几个特殊页面
/page/1
代表关于水的页面
/page/2
代表关于火的页面。
其他页面都是“正常”之类的
/contact
/about
...
在 RouterModule 我有:
RouterModule.forRoot([
{
path: 'page/:id',
component: PageComponent
},
{
path: 'contact',
component: ContactComponent
},
因此,PageComponent 中的 Water 和 Fire 内容分别根据 id 1 或 2 生成。 (我还有其他动态数据,不只是水和火)
现在我想当用户进入时
/water
查看内容(不更改 URL!)到
/page/1
所以我有一个重定向,缺乏更好的解决方案:
{ path: 'water', redirectTo: 'page/1', pathMatch: 'full' },
{ path: 'fire', redirectTo: 'page/2', pathMatch: 'full' } ...
但这会导致 URL 发生变化。但我想要的是当用户进入时
/water
我希望 URL 保持不变,而不是重定向! (同样适用于 /fire 和其他动态内容页面。)
【问题讨论】:
-
也许只是摆脱
/pages/:id路由,而拥有{ path: 'water', component: PageComponent }? -
那我怎么传id给它呢?
-
哦,你的意思是,我读到了 URL 结尾?没想到,这不是“作弊”吗?难道没有更标准的Angular方式吗?
-
为什么读取路由参数并相应地改变视图是“作弊”?
ActivatedRoute.params(或paramMap)是有原因的。 -
你能帮我看看如何读取路由参数吗?以及如何在我的示例中将它们放在首位?请在答案中回复。
标签: angular url-rewriting routing url-redirection