我如何得到当前路线的名称?

时间:2016-02-22 20:07:07

标签: angular

我如何获得当前路线的名称?不是URL部分,而是路由名称或别名。

我想在CanActivate挂钩内重定向。如果此钩子返回false,当我停留在根路由('/')时,我需要重新加载页面,因为同一URL上的标准Route.navigate没有重新加载页面。

我也在StackOverflow上寻找类似的问题,但没有找到任何解决方案。所有的解决方案都基于Location url解析,但这不是我想要的。

1 个答案:

答案 0 :(得分:3)

beta.x路由器和RC.1路由器已弃用

我想这就是你要找的https://github.com/brandonroberts/angular/commit/c1d499d567d88baa10fa964459feb15b267e8c8b。目前,这似乎只能使用_currentInstruction的私有Router字段。

另见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;
  }
}