Javascript 角度2路由-路由器RC3
我试图在获得id后使用routerLink导航到一个页面,我可以获得id 问题是链接显示为“/页;id=10/组件'。我希望它显示为“/page/10/component”(不是矩阵表示法-no';id=”) 在我的app.routes.ts中:Javascript 角度2路由-路由器RC3,javascript,angularjs,angular,angular2-routing,angular2-router3,Javascript,Angularjs,Angular,Angular2 Routing,Angular2 Router3,我试图在获得id后使用routerLink导航到一个页面,我可以获得id 问题是链接显示为“/页;id=10/组件'。我希望它显示为“/page/10/component”(不是矩阵表示法-no';id=”) 在我的app.routes.ts中: @RouterConfig = [ { path: 'page/:id/component', component: MyComponent, data: {id: 'item.id'} } ]; 在我的页面中: <a [routerL
@RouterConfig = [
{ path: 'page/:id/component', component: MyComponent, data: {id: 'item.id'} }
];
在我的页面中:
<a [routerLink]="['page', {id: item.id}, 'component']">
我正在使用最新的Angular 2路由器组件(RC3 Beta 2)
有人知道我做错了什么吗?提前感谢。这应该是:
<a [routerLink]="['page', {'id': item.id}, 'component']">
而不是:
<a [routerLink]="['/page', item.id, 'component']">
试试这个
<a [routerLink]="['page', item?.id, 'component']">
从我看到的情况来看,此路由配置不起作用:
{ path: 'page/:id/component', component: MyComponent, data: {id: 'item.id'} }
我想你真正需要问的是,最终的'/component'
是否必要。如果是,您可能需要考虑添加一个.< /p>
另一种选择是使用page/component/:id
更改路线的顺序。我相信routerlink指令会将URL搜索参数附加到路由的末尾,所以这应该是可行的
同样,最简单的解决方案是从路由配置中删除
'/component'
我在我正在开发的应用程序中做同样的事情。也许你在别的地方有错误。确保您的组件指令列表中有路由器指令。我的指令列表中也有路由器指令。如果您通过服务获取项目,它可能未定义,因为此时您正在尝试访问它。能否尝试console.log(item)
并查看它是否已定义?谢谢。也尝试过,但得到一个“无法读取属性”toString“的未定义”错误,可能是指“项”。我正在通过一个服务获取项目,并在页面的其他位置显示该项目的另一个属性。请尝试按照我更新的回答中的建议添加elvis运算符。它表示toString出错。这不应该出现在路由器链路上。您可以检查链接,它应该正确形成。您需要确认这可能来自您要路由到的组件。还需要在“提供路由器”中设置enableTracing true,以查看它在什么导航状态下失败provideRouter(..,{enableTracing:true})