我如何获得当前路线的名称?不是URL部分,而是路由名称或别名。
我想在CanActivate
挂钩内重定向。如果此钩子返回false
,当我停留在根路由('/')
时,我需要重新加载页面,因为同一URL上的标准Route.navigate
没有重新加载页面。
我也在StackOverflow上寻找类似的问题,但没有找到任何解决方案。所有的解决方案都基于Location url解析,但这不是我想要的。
答案 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;
}
}