2017-06-30 150 views
5

也許我錯過了什麼?Angular 2激活路線

在Angular 2組件中,我簡單地試圖獲得完整的激活路徑。我不想使用location.href

我的構造函數如下:

constructor(private route: ActivatedRoute) {} 

而在ngOnInit()我想:

this.route.data.url 

this.route.snapshot 

既不工作。

任何幫助都非常感謝。

+0

'this.route.url'。 – developer033

+0

所以我會假設我必須解析數組並重新構造這個url?我希望URL可以作爲路由器數據的字符串存在。 –

+0

@MikeSomeone在下面檢查我的答案,希望它有幫助:) –

回答

7

你並不需要使用ActivatedRoute對於這一點,你需要使用Router以查詢字符串的形式顯示當前網址:

constructor(r: Router) { 
    console.log(r.url); 
} 
+0

謝謝你,這個和哈米德的答案都有效。這裏有最佳做法嗎? –

+0

@MikeSomeone,我認爲我的方法當然是因爲這是路由器 –

+0

同意的標準公共API,並且它不需要調用path()方法。 –

3

更簡單的解決方案是使用@angular/common中的LocationStrategy類來直接從瀏覽器的URL中直接表示和讀取路由狀態,當試圖以字符串的形式獲取路由器URL時,這更方便this.router.url

import {LocationStrategy} from '@angular/common'; 


export class MyComponent implements OnInit { 

    constructor(private url:LocationStrategy) { } 

    ngOnInit() { 
      //this will log the current url 
     console.log(this.url.path()); 
    } 

} 
+0

謝謝,這個和Maximus的答案都有效。這裏有最佳做法嗎? –

+0

很高興這有幫助!但我不認爲這裏有一個最佳實踐,但有些選項,這裏是另一個:你可以從'@ angular/router''構造函數(state:RouterStateSnapshot)'注入'RouterStateSnapshot'並像這樣使用'讓url:string = state.url;'並且在官方文檔路由器指南中使用這種方法。 –

+1

@HamedBaatour,這將只顯示一個網址段,與激活的路線 –