我正在将Angular应用程序从ui-router
升级到@angular/router
(v6)。
有一个函数想找到以前的路线。这是使用Transition
ui-router/core
的实现
const newFromName = this.transition.from().name;
this.transition.params('from')
我删除了大部分功能,因为它不相关。
我的问题是:
是否有
@angular/router
等同于上述两行?
我们使用
"@uirouter/angular-hybrid": "3.1.7"
"@angular/router": "6.1.1",
注意:这与动画无关。我不想为过渡设置动画,我只想知道以前的路线是什么。
添加了说明:例如,如果我在导航至该组件之前处于不同的路线,例如hello/world
,然后使用my/new/route
中的此代码导航到路线。我需要知道值/hello/world
答案 0 :(得分:0)
您可以使用它,并在// Exit Code
中访问您来自的路线
import { Router, NavigationStart, NavigationEnd } from '@angular/router';
...
constructor(router:Router) {
router.events.subscribe(e => {
if(e instanceof NavigationStart) {
// Init Code
}
if(e instanceof NavigationEnd) {
// Exit Code
}
}
});
答案 1 :(得分:0)
@Injectable()
export class RouterState {
private routeHistory = [];
constructor(private router: Router) {
// nothing to do
}
public startHistory() {
this.router.events
.pipe(filter(e => e instanceof NavigationEnd))
.subscribe(newUrl => this.routeHistory = [...this.routeHistory, newUrl]);
}
public getRouteHistory() {
return this.routeHistory;
}
}
在您的应用程序组件中:
constructor(private routerState: RouterState) {
this.routerState.startHistory();
}
在您需要获取历史记录的组件中:
constructor(private routerState: RouterState) {}
yourFunction() {
const allRoutes = this.routerState.getRouteHistory();
const lastUrl = !!allRoutes.length
? allRoutes.slice(-2)
: '';
}