У меня есть routing-back-service
, который при загрузке начинает распознавать маршруты. В одном из моих компонентов (профиль участника) я хочу, чтобы кнопка «Назад» работала как кнопка «Назад» браузера, используя этот сервис для получения предыдущего URL.
Проблема в том, что если я вызываю сервис из компонента профиля участника при повторном нажатии, то в первый раз он не получает предыдущий маршрут и в дальнейшем работает нормально.
Как вызвать эту службу во время запуска приложения, чтобы оно могло распознавать маршруты с самого начала?
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([ '/' ]);
}
}