2016-02-22 54 views
1

我如何獲得當前路線的名稱?不是URL部分,而是路由名稱或別名。我如何獲得當前路線的名稱?

我想在CanActivate鉤子裏面做重定向。如果這個鉤子返回false,而我留在根路線('/'),我需要重新加載頁面,因爲在同一個URL上的標準Route.navigate沒有重新加載頁面。

另外我在StackOverflow上尋找類似的問題,但沒有找到任何解決方案。基於Location url解析的所有少數解決方案,但這不是我想要的。

回答

3

beta.x路由器和路由器RC.1,棄用

我想這是你在找什麼https://github.com/brandonroberts/angular/commit/c1d499d567d88baa10fa964459feb15b267e8c8b。目前,這似乎只能使用Router的專用_currentInstruction字段。

https://github.com/angular/angular/issues/5335#issuecomment-170088933

見在此期間,如果您想在當前的路線指示,您可以訂閱路由器URL更新和轉換到這一點的指令。

import {Injectable} from 'angular2/core'; 
import {Router, Instruction} from 'angular2/router'; 

@Injectable() 
export class RouterState { 
    _current: Instruction; 

    constructor(public router: Router, location: Location) { 
    // subscribe to router url updates 
    router.subscribe((url) => { 
     // convert the current url into an instruction 
     this._getInstruction(url); 
    }); 
    } 

    private _getInstruction(url) { 
    this.router.recognize(url).then((ins) => { 
     if (ins) { 
     // Store the current route instruction 
     this._current = ins; 
     } 
    }); 
    } 

    current() { 
    // return current instruction 
    return this._current; 
    } 
} 
+0

參見http://stackoverflow.com/a/37050883/217408 –