我有home.component,其中的卡片重定向到动态加载的组件,这与点击部分中的卡片不同:
<card [routerLink]="['/workspace', section.name]">
单击后,它应该将适当的路由传递给登录组件,因此我们存储了登录后要访问的适当路由。我们有一个登录组件,该组件调用(我在NgOnInit和构造函数上都尝试过)一条路由服务逻辑如下:
login.component:
constructor(private loginService: LoginService, private router: Router,
private routesService: RoutesService) { }
ngOnInit() {
this.loginService.logout();
this.lastRouteVisited = this.routesService.getCurrentAndPreviousRoute();
.........................................
}
routes.service:
constructor(private router: Router) { }
getCurrentAndPreviousRoute() : string {
const vm = this;
this.router.events.pipe(filter((evt: any) => evt instanceof RoutesRecognized), pairwise())
.subscribe((events: RoutesRecognized[]) => {
if(!events[0].urlAfterRedirects.includes("login") &&
(vm.routesLinks.length == 0 || vm.routesLinks[vm.routesLinks.length-1].name != events[0].urlAfterRedirects)) {
vm.routesLinks.push({name: events[0].urlAfterRedirects});
vm.lastVisitedRoute = vm.routesLinks[vm.routesLinks.length-1].name;
}
}
);
return vm.lastVisitedRoute;
}
问题是首次加载应用程序时,routes.service中的suscribe()方法无法启动,好像无法订阅到RoutesRecognized实例一样,因此登录后我被重定向到home.component而不是指定的工作区组件。另一方面,每当我返回主页时,触发相同事件(单击同一张卡片)时,就好像已经初始化RoutesRecognized一样,可以从home.component中的[routerLink]获取路由。 html,suscribe方法启动,我们被正确地重定向到workspace.component。