Angular2 - 不希望角度路由器将路径分隔符视为单独的路径段

时间:2016-08-12 05:56:06

标签: angular angular2-routing

我的路线如下:

path: 'Foo/:Address'

Address参数可以包含如下字符串:

boo/bar/aboo/b

但是当我的代码路由到上述任何地址时,我得到一个例外,即没有匹配的路由。我认为它认为foobara是不同的路段,因此会引发异常。我需要路由中的单个参数,因为段的数量是随机的,并且url应该是没有任何字符串替换的原样。

有什么方法可以让角度知道foo后的任何内容都是一个单一的参数吗?

我使用的是以下版本:

"@angular/core": "2.0.0-rc.4"

"@angular/router": "3.0.0-beta.1"

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);
        }
    });
}