2016-08-12 31 views
0

我有如下路線:Angular2 - 不想角路由器,看看路徑分隔符爲單獨的航段

path: 'Foo/:Address'

的地址參數可以包含如下字符串:

boo/bar/aboo/b

但是,當我的代碼路由到任何上述地址,我得到一個異常,沒有匹配的路線。我想它認爲foo,bara是不同的路線段,因此它會引發異常。我需要一個參數在路由中,因爲段的數量是隨機的,並且網址應該是沒有任何字符串替換的。

有沒有什麼辦法讓角度知道foo之後的任何東西都是單個參數?

我使用以下版本:

{ 
    path: 'address', children: [ 
     { path: '**', component: YourComponent } 
    ] 
} 

然後:

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

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

+0

寫入它作爲一個查詢字符串,路徑:'Foo?地址=:參數' – shammelburg

+0

@shammelburg不是一個選項..我想它,因爲它是在網址。 – Mustafa

+0

「boo/bar/a」中的「a」是否表示地址參數? – shammelburg

回答

0

如果您配置的路由這樣你可以做到這一點

OPTION 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之後)中的網址與組分:

import { Router, NavigationEnd } from '@angular/router'; 
... 
constructor(private router: Router) { 
    this.router.events.subscribe(x => { 
     if (x instanceof NavigationEnd) { 
      console.log(this.router.url); 
     } 
    }); 
} 
+0

我現在有一個類似的設置。但是那段數量不是固定的,所以添加那麼多路線是不可行的。 – Mustafa

+0

再次更新我的答案,添加一點點信息:) – Delosdos

+0

但是,然後地址參數將不會有完整的地址。例如,如果地址是'boo/bar/a',那麼地址參數將只有'boo' – Mustafa