我有一个routing-back-service
,它在加载时开始识别路线。在我的一个组件(成员配置文件)中,我想使用此服务使后退按钮作为浏览器后退按钮工作,以获取先前的网址。
这是一个问题,如果我在单击返回时从member-profile组件调用该服务,则该服务第一次没有获得上一条路由,以后会正常工作。
在应用启动时如何调用此服务,以便它可以从头开始识别路线?
routing-back.service
import { Injectable } from '@angular/core';
import { filter, pairwise } from 'rxjs/operators';
import { Router, RoutesRecognized } from '@angular/router';
@Injectable({
providedIn: 'root'
})
export class RoutingBackService {
private previousUrl: string;
constructor(private router: Router) {
this.router.events
.pipe(filter((e: any) => e instanceof RoutesRecognized),
pairwise()
).subscribe((e: any) => {
this.previousUrl = e[0].urlAfterRedirects;
});
}
public getPreviousUrl() {
return this.previousUrl;
}
}
member-profile.ts
goBack() {
const currentUser = this.userService.get();
if (currentUser.isUserAdmin) {
this.previousUrl = this.back.getPreviousUrl();
this.router.navigate([ this.previousUrl ]);
} else {
this.router.navigate([ '/' ]);
}
}
答案 0 :(得分:0)
可能将其放在应用程序级别的.ts文件的NgOnInit方法中吗?