Получить предыдущий URL в Angular - PullRequest
0 голосов
/ 04 мая 2020

Мне нужен предыдущий URL в функции OnInit Angular файла TS.

ngOnInit() {
        this.router.events
            .pipe(filter((e: any) => e instanceof RoutesRecognized),
                pairwise()
            ).subscribe((e: any) => {
                console.log(e[0].urlAfterRedirects); // previous url
            });
    }

Я могу получить код выше, но это повторяется несколько раз, потому что у меня много дочерних компонентов в Parent. Мне нужен любой другой метод, который запускается только один раз

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

https://community.wia.io/d/22-access-the-previous-route-in-your-angular-5-app

Это хорошо работает. Лучше использовать Сервис, Сервис будет выполнять только необходимые.

0 голосов
/ 04 мая 2020

Вы можете попробовать использовать решение на основе этой статьи

@Injectable({
  providedIn: 'root'
})
export class RoutingStateService
{
  private history = [];

  constructor(private router: Router, @Inject(DOCUMENT) private _document: any)
  {
  }

  public recordHistory(): void
  {
    this.router.events
      .pipe(filter(event => event instanceof NavigationEnd))
      .subscribe(({urlAfterRedirects}: NavigationEnd) => {
        this.history = [...this.history, urlAfterRedirects];
      });
  }

  public getHistory(): string[]
  {
    return this.history;
  }

  public getPreviousUrl(): string
  {
    return this.history[this.history.length - 2] || this._document.referrer;
  }
}

Затем в конструкторе основного компонента внедрите эту службу и вызовите recordHistory

...