我的路线如下:
path: 'Foo/:Address'
Address参数可以包含如下字符串:
boo/bar/a
或
boo/b
但是当我的代码路由到上述任何地址时,我得到一个例外,即没有匹配的路由。我认为它认为foo
,bar
和a
是不同的路段,因此会引发异常。我需要路由中的单个参数,因为段的数量是随机的,并且url应该是没有任何字符串替换的原样。
有什么方法可以让角度知道foo
后的任何内容都是一个单一的参数吗?
我使用的是以下版本:
"@angular/core": "2.0.0-rc.4"
"@angular/router": "3.0.0-beta.1"
答案 0 :(得分:0)
如果您按照以下方式配置路线,则可以执行此操作:
{
path: 'address', children: [
{ path: '**', component: YourComponent }
]
}
然后:
选项1:使用以下方法获取组件中的各个部件:
import { ActivatedRoute} from '@angular/router';
...
constructor(private route: ActivatedRoute) {
let addr = '';
for (var i = 0; i < route.snapshot.url.length; i++)
addr += (addr !== '' ? '/' : '') + route.snapshot.url[i];
console.log('full address', addr);
}
选项2:使用以下命令从组件中的路由器(在NavigationEnd之后)抓取URL:
import { Router, NavigationEnd } from '@angular/router';
...
constructor(private router: Router) {
this.router.events.subscribe(x => {
if (x instanceof NavigationEnd) {
console.log(this.router.url);
}
});
}