Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2路由-路由器RC3_Javascript_Angularjs_Angular_Angular2 Routing_Angular2 Router3 - Fatal编程技术网

Javascript 角度2路由-路由器RC3

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

我试图在获得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 [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})