当应用程序在Angular中启动时如何调用服务?

时间:2019-03-07 00:34:07

标签: angular angular-ui-router angular-routing

我有一个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([ '/' ]);
    }
  }

1 个答案:

答案 0 :(得分:0)

可能将其放在应用程序级别的.ts文件的NgOnInit方法中吗?