2017-01-25 41 views
1

在角2中,是否有可能以「角度方式」在根組件中獲取查詢參數?如何在根組件中獲取查詢參數?

我有一個簡單的plnkr與根組件和兩個路由/狀態。
我嘗試用得到的參數:

export class App implements OnInit { 

    constructor(private route: ActivatedRoute) { 

    } 
    ngOnInit(){ 
    console.log(this.route.snapshot.queryParams); 
    } 
} 

如果我打開一個查詢參數的例子:plnkr在控制檯日誌的對象是空的。
但是當我點擊「一個」或「兩個」鏈接時,它可以獲取查詢參數。

我想根不能看到查詢參數,因爲它不是一個激活的路由。
解決方案是創建假根路由嗎?或者有另一種方法來讀取網址(不是在談論原生JS)。

我的使用案例:無論我在哪條路線上,我都需要能夠檢查url中是否存在「令牌」,從中讀取並刪除它。

+1

目前,當您打開您只是應用的例子,並沒有指定任何查詢參數。 –

+0

是的,這就是我用額外參數指定第二個鏈接的原因。 – MrVoodoo

回答

0

看一看我的變化:

https://plnkr.co/edit/b45VUvfVqUl5u2EuzNI9?p=preview

{ 
path: '**', 
component: App 
} 

我添加了一個默認路由 - 這應該被添加到路由器。這基本上是說通過任何其他路線,然後去這裏。

<a routerLink="**" [queryParams]="{token:12345678}">Home</a> 

在鏈接我添加了首頁鏈接,類似於您的其他鏈接。當你導航到一個或兩個,然後回到家中,你會看到在對象中傳遞的令牌。 這是因爲令牌是在鏈接中指定的。

這隻有在鏈接具有令牌時,才能真正起作用,無論是硬編碼的還是由其他組件動態生成的。

這可能幫助:

https://angular.io/docs/ts/latest/guide/router.html#!#query-parameters

+0

通過爲每個案例添加路由,這意味着每個組件都必須具有自己的參數提取邏輯。 這就是爲什麼我需要一些我可以在根組件的OnInit中使用的東西。 – MrVoodoo

相關問題