2016-05-06 106 views
4

在Angular 2中,我希望能夠使用route.path ..獲取路徑。Angular 2獲取路線沒有提供路線

裏面一個部件構造器,我有:

constructor(private route: Route) {} 

所以我想能夠調用:

this.route.path 

而對於應用程序引導我:

bootstrap(AppComponent, 
[ 
    ROUTER_PROVIDERS, 
]); 

但我仍然得到沒有供應商的路線!錯誤

+0

如果在構造函數之外使用,只需將構造函數中的修飾符改爲public – mayur

回答

4

我假設你注入Location而不是RouteRoute用於路由配置,Angular無法知道要注入哪個Route實例。

Location提供了path()函數來獲取當前URL。

根據Angular2版本的不同,從哪裏可以導入它。

參見Location and HashLocationStrategy stopped working in beta.16

< = 15的β

import {Location} from 'angular2/router'; 

> = 16的β< rc.0

import {Location} from 'angular2/platform/common'; 
constructor(private location:Location) { 
    console.log(location.path()); 
} 

> = rc.0

import {Location} from '@angular/common'; 
+0

您設置了正確的軌道,它必須是'@ angular/common'的import {Location}; '因爲2.0.0-rc.0如果你添加這個,我會接受:) – RobSeg

+0

對,忘了它又改了 –

0

Route類可以被注入。您可以注入Router一個或RouteParams

constructor(private router:Router,private params:RouteParams) { 
    this.id = params.get('id'); 
} 

如果您需要在當前路由的路徑,而注入的Location類,並使用其path方法

constructor(private location:Location) { 
    var path = location.path(); 
} 
+0

從哪裏導入RouteParams post beta(rc.1)。它無法從@ angular/router中導入它,我無法找到它在任何地方說的地方。 – mottosson

0

與ROUTER_BINDINGS試試吧。

+1

ROUTER_BINDINGS已被棄用(使用ROUTER_PROVIDERS代替),因爲alpha41 – RobSeg

+0

太短而無法回答,您也可以將其用作評論。 –