Как позвонить в сервис, когда приложение запускается в Angular? - PullRequest
0 голосов
/ 07 марта 2019

У меня есть 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([ '/' ]);
    }
  }

1 Ответ

0 голосов
/ 07 марта 2019

Может быть, поместите его в метод NgOnInit на уровне приложения .TS файл помогает?

...