首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Angular 2 Route中将Id更改为Name

在Angular 2 Route中将Id更改为Name
EN

Stack Overflow用户
提问于 2017-06-22 21:54:38
回答 2查看 1.3K关注 0票数 1

嗯,我在问这个问题之前做了一些研究。我认为这很简单,因为这是一个常见的场景。

这是我的锚标签。

代码语言:javascript
复制
  <a [routerLink]="['./product', 1]">Vitamins</a>

当使用时,单击我通过将Id传递给Web API来获取数据。获取数据后,Url显示为http://localhost:4200/product/1

在我的路由中,我将其配置为

代码语言:javascript
复制
{ path: 'product/:id', component: ProductComponent },

我想将这个网址修改为http://localhost:4200/vitamins,这样更有意义。我该怎么做呢?

我找到的最接近的是这个,但这不是我要找的

Angular 2 : routing without changing URL

EN

回答 2

Stack Overflow用户

发布于 2017-06-22 22:12:21

尝试使用Location对象。

代码语言:javascript
复制
import { Location } from '@angular/common';

constructor(public location: Location) {}

当您想在不重定向或导航路由器对象的情况下更新窗口URL时,请放置以下内容:

代码语言:javascript
复制
this.location.go('vitamins');

这应该在你的基本url后面写上'vitamins‘。

票数 1
EN

Stack Overflow用户

发布于 2017-06-22 22:13:43

我可能只会链接到<a [routerLink]="'/product'">Vitamins</a>。将其设置为可选,并在组件或服务中处理这种情况(如果没有传递id,则将其设置为1)

在其他情况下,你可能希望url看起来像http://myexample.com/vitamins/2,否则直接链接是不可能的(或者你怎么传递参数呢?)例如,如果您不想将url加入书签或进行硬重新加载。

一个不错的方法是使用location.go('/vitamins'); (Location Docs),它会更改地址栏中的url,但不会触发angular router的任何路由更改。我称它为hacky,因为它可能有副作用,比如如果你在特定的路线上,会有书签/重新加载问题(当然你可以用另一种方式来解决这个问题,比如说在localStorage中临时保存当前的路线参数)。

希望我能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44701477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档